On the Java side, you need to first read the bytes into a `MessageReader`.
That's typically done via one of the `Serialize.read()` methods.

The `AnyPointer.Reader()` is not intended for external use. Probably we
should make it private.


On Mon, Sep 30, 2019 at 6:25 AM 张小 <[email protected]> wrote:

> C++ server send Capn Object to JavaClient like this
>
> capnp::MallocMessageBuilder message;
> Info::Builder info = message.initRoot<Info>();
> info.setId(123);
> kj::ArrayPtr<const kj::ArrayPtr<const capnp::word>> segments =
> message.getSegmentsForOutput();
>
> then I convert the  segments  object to char* send to java_client by proto
> rpc_call (bytes field)
>
>
> Then In java_client, I do like this to read the capn object
> com.google.protobuf.ByteString capn_object_bytes =
>  response.getCapnObject()
> SegmentReader segment = new
> SegmentReader(capn_object_bytes.asReadOnlyByteBuffer(), null);
> AnyPointer.Reader any = new AnyPointer.Reader(segment, 0, 64*1024*1024);
> Info.Reader info = any.getAs(Info.factory);
> System.out.println("Id:" + info.getId());
>
>
> run java_cliet ,happend error like this :
> Exception in thread "main" java.lang.NullPointerException
> at org.capnproto.WireHelpers.readStructPointer(WireHelpers.java:918)
> at
> org.capnproto.StructFactory.fromPointerReaderRefDefault(StructFactory.java:34)
> at org.capnproto.StructFactory.fromPointerReader(StructFactory.java:41)
> at org.capnproto.StructFactory.fromPointerReader(StructFactory.java:24)
> at org.capnproto.AnyPointer$Reader.getAs(AnyPointer.java:56)
>
>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Cap'n Proto" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/capnproto/081ab20b-5eae-43d5-a4fc-8230ef39d4a5%40googlegroups.com
> <https://groups.google.com/d/msgid/capnproto/081ab20b-5eae-43d5-a4fc-8230ef39d4a5%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Cap'n Proto" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/capnproto/CABR6rW8vHO5omXj40YaVGqc5g2_cnmXJ1G0Kk%3DC7iwK3TwJ5sA%40mail.gmail.com.

Reply via email to