> I just started looking into protobuf for a project of mine.
> From the Java Api page I could not really find how to parse a
> generated (compiled .proto is present) but "unknown" message.
>
> So for example: I have messages types MessageA and MessageB. The
> client component receives some bytes representing a message of type A
> OR B. Do I have to add information of the type of message that's been
> send, or is there an easy way of automatically parsing the message
> like:
>
> byte[] b; //hols byte representation of message
> Message message = foo(b); //parse message
> if(message instanceof MessageA)
> System.out.println("was type A");
> else
> System.out.println("was type B");
No, there's no way to do this, because the wire format doesn't include
information about the type of message. It's even possible that the
same set of bytes could be a valid message of both types.
The usual way to handle this is to create a wrapper message that can
hold either, like so:
// Only one field may be filled out
message AorB {
optional MessageA message_a;
optional MessageB message_b;
}
And then you can parse it via:
AorB result = AorB.parseFrom(data);
if (result.hasMessageA()) {
System.out.println("Was type A");
} else if (result.hasMessageB()) {
System.out.println("Was type B");
}
- Adam
--
You received this message because you are subscribed to the Google Groups
"Protocol Buffers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/protobuf?hl=en.