capnproto-java-rpc/runtime/src/main/java/org/capnproto/Request.java

75 lines
2.2 KiB
Java
Raw Normal View History

package org.capnproto;
import java.util.concurrent.CompletableFuture;
2020-11-25 15:47:02 +00:00
public interface Request<Params>
extends RequestBase<Params> {
2020-11-25 15:47:02 +00:00
RequestBase<Params> getBaseRequest();
2020-11-25 15:47:02 +00:00
default FromPointerBuilder<Params> getParamsFactory() {
return getBaseRequest().getParamsFactory();
}
2020-11-25 15:47:02 +00:00
default RequestBase<AnyPointer.Builder> getTypelessRequest() {
return getBaseRequest().getTypelessRequest();
}
static <Params> Request<Params> newBrokenRequest(FromPointerBuilder<Params> paramsFactory,
Throwable exc) {
2020-10-23 18:25:50 +00:00
2020-11-24 15:37:28 +00:00
var message = new MessageBuilder();
var hook = new RequestHook() {
@Override
public RemotePromise<AnyPointer.Reader> send() {
2020-11-02 21:39:58 +00:00
return new RemotePromise<>(CompletableFuture.failedFuture(exc),
new AnyPointer.Pipeline(PipelineHook.newBrokenPipeline(exc)));
}
@Override
2020-11-25 15:47:02 +00:00
public CompletableFuture<java.lang.Void> sendStreaming() {
return CompletableFuture.failedFuture(exc);
}
};
return new Request<>() {
@Override
public FromPointerBuilder<Params> getParamsFactory() {
return paramsFactory;
}
@Override
2020-11-25 15:47:02 +00:00
public RequestBase<AnyPointer.Builder> getTypelessRequest() {
2020-11-02 21:39:58 +00:00
return new AnyPointer.Request(message.getRoot(AnyPointer.factory), hook);
}
2020-11-25 15:47:02 +00:00
@Override
public Request<Params> getBaseRequest() {
return this;
}
};
2020-09-29 13:08:23 +00:00
}
static <Params> Request<Params> fromTypeless(
FromPointerBuilder<Params> paramsFactory,
Request<AnyPointer.Builder> typeless) {
return new Request<>() {
@Override
public FromPointerBuilder<Params> getParamsFactory() {
return paramsFactory;
}
@Override
public Request<AnyPointer.Builder> getTypelessRequest() {
return typeless;
}
2020-11-25 15:47:02 +00:00
@Override
public Request<Params> getBaseRequest() {
return this;
}
};
}
}