syntax = "proto2";
package proto2_basic;
message Defaults {
optional int32 i = 1 [default = 17];
optional string s = 2 [default = "hello"];
optional bool b = 3 [default = true];
optional float f = 4 [default = 3.5];
optional double d = 5 [default = 1.5];
optional int64 i64 = 6 [default = 1234567890123];
optional uint64 u64 = 7 [default = 17];
optional bytes by = 8 [default = "\x00\xff"];
optional Color color = 9 [default = GREEN];
enum Color {
RED = 0;
GREEN = 1;
BLUE = 2;
}
}
message Cardinality {
required int32 r = 1;
optional int32 o = 2;
repeated int32 packed_default = 3;
repeated int32 explicitly_packed = 4 [packed = true];
repeated int32 explicitly_unpacked = 5 [packed = false];
}
message Nested {
required Inner inner = 1;
optional Inner inner_opt = 2;
message Inner {
required int32 x = 1;
}
}
// Proto2 legacy groups. Wire format uses SGROUP (3) / EGROUP (4) tag
// pairs instead of a length-prefixed message body.
message WithGroup {
optional group SingleGroup = 1 {
optional int32 a = 2;
optional string s = 3;
}
repeated group RepGroup = 4 {
optional int32 n = 5;
}
}
// Bench fixture exercising the proto2-only shapes: required scalar,
// optional repeated, custom default, a `group` field, and a nested
// message. Used by bench/bench.lua against both modes.
message BenchPayload {
required int32 id = 1;
optional string name = 2 [default = "anonymous"];
optional int32 retries = 3 [default = 3];
repeated int32 lucky_numbers = 4 [packed = true];
repeated string tags = 5;
optional Inner inner = 6;
optional group Stats = 7 {
optional int32 latency_ns = 8;
optional int32 attempts = 9;
}
message Inner {
required string key = 1;
optional int32 weight = 2;
}
// Reserve a range for the file-level extensions declared below.
extensions 100 to 199;
}
extend BenchPayload {
optional int32 ext_count = 100;
optional string ext_label = 101;
}