diff --git a/compiler/src/test/java/org/capnproto/test/EncodingTest.java b/compiler/src/test/java/org/capnproto/test/EncodingTest.java index 18b9344..60c35eb 100644 --- a/compiler/src/test/java/org/capnproto/test/EncodingTest.java +++ b/compiler/src/test/java/org/capnproto/test/EncodingTest.java @@ -861,10 +861,8 @@ public class EncodingTest { MessageBuilder message2 = new MessageBuilder(); AnyPointer.Builder root2 = message2.initRoot(AnyPointer.factory); - root2.set(message1.getRoot(AnyPointer.factory).asReader()); + root2.setAs(AnyPointer.factory, message1.getRoot(AnyPointer.factory).asReader()); TestUtil.checkTestMessage(root2.getAs(Test.TestAllTypes.factory)); } } - - diff --git a/runtime-rpc/src/main/java/org/capnproto/RpcState.java b/runtime-rpc/src/main/java/org/capnproto/RpcState.java index 7a1f52f..63da907 100644 --- a/runtime-rpc/src/main/java/org/capnproto/RpcState.java +++ b/runtime-rpc/src/main/java/org/capnproto/RpcState.java @@ -1382,7 +1382,7 @@ final class RpcState { // Just forward to another local call var promise = request.send(); var voidPromise = promise.thenAccept(results -> { - getResults(0).set(results); + getResults(0).setAs(AnyPointer.factory, results); }); return new ClientHook.VoidPromiseAndPipeline(voidPromise, promise.pipeline().hook); } diff --git a/runtime/src/main/java/org/capnproto/AnyPointer.java b/runtime/src/main/java/org/capnproto/AnyPointer.java index c4d2312..a15f68c 100644 --- a/runtime/src/main/java/org/capnproto/AnyPointer.java +++ b/runtime/src/main/java/org/capnproto/AnyPointer.java @@ -23,7 +23,8 @@ package org.capnproto; public final class AnyPointer { public static final class Factory - implements PointerFactory { + implements PointerFactory, + SetPointerBuilder { public final Reader fromPointerReader(SegmentReader segment, CapTableReader capTable, int pointer, int nestingLimit) { return new Reader(segment, capTable, pointer, nestingLimit); } @@ -35,6 +36,15 @@ public final class AnyPointer { result.clear(); return result; } + public void setPointerBuilder(SegmentBuilder segment, CapTableBuilder capTable, int pointer, Reader value) { + if (value.isNull()) { + WireHelpers.zeroObject(segment, capTable, pointer); + WireHelpers.zeroPointerAndFars(segment, pointer); + } + else { + WireHelpers.copyPointer(segment, capTable, pointer, value.segment, value.capTable, value.pointer, value.nestingLimit); + } + } } public static final Factory factory = new Factory(); @@ -128,22 +138,6 @@ public final class AnyPointer { factory.setPointerBuilder(this.segment, this.capTable, this.pointer, reader); } - public void set(AnyPointer.Reader reader) { - if (reader.isNull()) { - WireHelpers.zeroObject(this.segment, this.capTable, this.pointer); - WireHelpers.zeroPointerAndFars(this.segment, this.pointer); - } - else { - WireHelpers.copyPointer( - this.segment, this.capTable, this.pointer, - reader.segment, reader.capTable, reader.pointer, reader.nestingLimit); - } - } - - final void setAsCap(Capability.Client cap) { - WireHelpers.setCapabilityPointer(this.segment, capTable, this.pointer, cap.getHook()); - } - public final Reader asReader() { return new Reader(segment, this.capTable, pointer, java.lang.Integer.MAX_VALUE); }