Yes, I use like this :
MessageReader message 
= org.capnproto.Serialize.read(capn_object_bytes.asReadOnlyByteBuffer());, 
Info.Reader adInfo = message.getRoot(Info.factory);

but error like this :
Exception in thread "main" java.lang.IllegalArgumentException
at java.nio.Buffer.limit(Buffer.java:275)
at org.capnproto.Serialize.read(Serialize.java:140)
at org.capnproto.Serialize.read(Serialize.java:111)
 

在 2019年9月30日星期一 UTC+8下午8:29:41,David Renshaw写道:
>
> 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] <javascript:>> 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] <javascript:>.
>> 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/513eff93-55e1-4f64-998f-f681f29c38a3%40googlegroups.com.

Reply via email to