2020-09-27 22:09:22 +00:00
|
|
|
package org.capnproto;
|
|
|
|
|
|
|
|
import java.util.concurrent.CompletableFuture;
|
|
|
|
|
2020-11-25 15:47:02 +00:00
|
|
|
public interface Request<Params>
|
|
|
|
extends RequestBase<Params> {
|
2020-10-30 18:16:49 +00:00
|
|
|
|
2020-11-25 15:47:02 +00:00
|
|
|
RequestBase<Params> getBaseRequest();
|
2020-09-27 22:09:22 +00:00
|
|
|
|
2020-11-25 15:47:02 +00:00
|
|
|
default FromPointerBuilder<Params> getParamsFactory() {
|
|
|
|
return getBaseRequest().getParamsFactory();
|
2020-09-27 22:09:22 +00:00
|
|
|
}
|
|
|
|
|
2020-11-25 15:47:02 +00:00
|
|
|
default RequestBase<AnyPointer.Builder> getTypelessRequest() {
|
|
|
|
return getBaseRequest().getTypelessRequest();
|
2020-11-20 16:27:44 +00:00
|
|
|
}
|
|
|
|
|
2020-10-30 18:16:49 +00:00
|
|
|
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();
|
2020-09-27 22:09:22 +00:00
|
|
|
|
|
|
|
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)));
|
2020-09-27 22:09:22 +00:00
|
|
|
}
|
|
|
|
|
2020-10-08 13:17:02 +00:00
|
|
|
@Override
|
2020-11-25 15:47:02 +00:00
|
|
|
public CompletableFuture<java.lang.Void> sendStreaming() {
|
2020-10-08 13:17:02 +00:00
|
|
|
return CompletableFuture.failedFuture(exc);
|
|
|
|
}
|
2020-09-27 22:09:22 +00:00
|
|
|
};
|
|
|
|
|
2020-10-30 18:16:49 +00:00
|
|
|
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-10-30 18:16:49 +00:00
|
|
|
}
|
2020-11-25 15:47:02 +00:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public Request<Params> getBaseRequest() {
|
|
|
|
return this;
|
|
|
|
}
|
2020-10-30 18:16:49 +00:00
|
|
|
};
|
2020-09-29 13:08:23 +00:00
|
|
|
}
|
|
|
|
|
2020-10-30 18:16:49 +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;
|
|
|
|
}
|
2020-10-30 18:16:49 +00:00
|
|
|
};
|
2020-09-27 22:09:22 +00:00
|
|
|
}
|
|
|
|
}
|