Hi,
Using Protobuf 2.1 with the following proto file:
message Message {
enum Type {
AUTH = 100;
}
required Type type = 1;
optional int32 id = 2;
extensions 100 to max;
}
message AuthRequest {
extend Message {
optional AuthRequest auth_request = 100;
}
required string name = 1;
required string pass = 2;
optional string nonce = 3;
optional string hmac = 4;
}
When setting name and pass to arbitray values, I get the following
bytes:
{8, 100, 16, 0, -94, 6, 40, 10, 4, 116, 101, 115, 116, 18, 32, 48, 57,
56, 70, 54, 66, 67, 68, 52, 54, 50, 49, 68, 51, 55, 51, 67, 65, 68, 69,
52, 69, 56, 51, 50, 54, 50, 55, 66, 52, 70, 54}.
If I print to text the corresponding message:
type: AUTH
id: 0
[game.req.AuthRequest.auth_request] {
name: "test"
pass: "098F6BCD4621D373CADE4E832627B4F6"
}
Feeding back this byte array to Message whit this code:
byte[] out = {8, 100, 16, 0, -94, 6, 40, 10, 4, 116, 101, 115, 116, 18,
32, 48, 57, 56, 70, 54, 66, 67, 68, 52, 54, 50, 49, 68, 51, 55, 51, 67,
65, 68, 69, 52, 69, 56, 51, 50, 54, 50, 55, 66, 52, 70, 54};
Message m = Message.parseFrom(out);
assertTrue(m.hasExtension(AuthRequest.auth_request));
I don't get any extension number 100 (getExtension returns null,
hasExtension is false and when I debug the program, there's nothing in
the extension FieldSet).
It all looks like the field 100 is parsed as an Unknown field.
When I text print the message, I get:
type: AUTH
id: 0
100: "\n\004test\022 098F6BCD4621D373CADE4E832627B4F6"
So yes, the data is here, but it isn't parsed as a known or valid
extension.
So simplifying the code, I end-up with the following non passing unit
test:
AuthRequest req =
AuthRequest.newBuilder().setName("test").setPass("test").build();
Message src =
Message.newBuilder().setType(Type.AUTH).setExtension(AuthRequest.authRequest,
req).build();
Message m = Message.parseFrom(src.toByteArray());
assertTrue(m.hasExtension(AuthRequest.authRequest));
What am I doing wrong?
--
Brice Figureau
My Blog: http://www.masterzen.fr/
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---