implement request send

This commit is contained in:
Vaci Koblizek 2020-09-28 22:16:38 +01:00
parent 15b83a9c05
commit 37c93cc5d2
2 changed files with 11 additions and 5 deletions

View file

@ -27,7 +27,7 @@ class QueuedClient implements ClientHook {
public Request<AnyPointer.Builder, AnyPointer.Reader> newCall(long interfaceId, short methodId) { public Request<AnyPointer.Builder, AnyPointer.Reader> newCall(long interfaceId, short methodId) {
var hook = new Capability.LocalRequest(interfaceId, methodId, this); var hook = new Capability.LocalRequest(interfaceId, methodId, this);
var root = hook.message.getRoot(AnyPointer.factory); var root = hook.message.getRoot(AnyPointer.factory);
return new Request<>(root, hook); return new Request<>(root, AnyPointer.factory, hook);
} }
@Override @Override

View file

@ -5,10 +5,12 @@ import java.util.concurrent.CompletableFuture;
public class Request<Params, Results> { public class Request<Params, Results> {
private final AnyPointer.Builder params; private final AnyPointer.Builder params;
private final RequestHook hook; private final FromPointerReader<Results> results;
private RequestHook hook;
Request(AnyPointer.Builder params, RequestHook hook) { Request(AnyPointer.Builder params, FromPointerReader<Results> results, RequestHook hook) {
this.params = params; this.params = params;
this.results = results;
this.hook = hook; this.hook = hook;
} }
@ -17,7 +19,11 @@ public class Request<Params, Results> {
} }
CompletableFuture<Results> send() { CompletableFuture<Results> send() {
return null; var typelessPromise = hook.send();
hook = null; // prevent reuse
return typelessPromise.getResponse().thenApply(response -> {
return response.getAs(results);
});
} }
static <T, U> Request<T, U> newBrokenRequest(Throwable exc) { static <T, U> Request<T, U> newBrokenRequest(Throwable exc) {
@ -36,7 +42,7 @@ public class Request<Params, Results> {
}; };
var root = message.getRoot(AnyPointer.factory); var root = message.getRoot(AnyPointer.factory);
return new Request<T, U>(root, hook); return new Request<T, U>(root, null, hook);
} }
} }