package org.capnproto; import java.util.concurrent.CompletableFuture; public interface Request { FromPointerBuilder getParamsFactory(); default Params getParams() { return this.getTypelessRequest().getParams().getAs(this.getParamsFactory()); } default RequestHook getHook() { return this.getTypelessRequest().getHook(); } Request getTypelessRequest(); static Request newBrokenRequest(FromPointerBuilder paramsFactory, Throwable exc) { final MessageBuilder message = new MessageBuilder(); var hook = new RequestHook() { @Override public RemotePromise send() { return new RemotePromise<>(CompletableFuture.failedFuture(exc), null); } @Override public CompletableFuture sendStreaming() { return CompletableFuture.failedFuture(exc); } @Override public Object getBrand() { return null; } }; var root = message.getRoot(AnyPointer.factory); return new Request<>() { @Override public FromPointerBuilder getParamsFactory() { return paramsFactory; } @Override public Request getTypelessRequest() { return null; } }; } static Request fromTypeless( FromPointerBuilder paramsFactory, Request typeless) { return new Request<>() { @Override public FromPointerBuilder getParamsFactory() { return paramsFactory; } @Override public Request getTypelessRequest() { return typeless; } }; } }