/
options_test.proto
140 lines (122 loc) · 3.6 KB
/
options_test.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
syntax = "proto3";
import "google/protobuf/descriptor.proto";
package test;
//Simple int32 based options (both single and repeated)
//for fields and messages
extend google.protobuf.FieldOptions {
repeated int32 fo_rep_int = 50000;
int32 fo_single_int = 50001;
}
extend google.protobuf.MessageOptions {
repeated int32 mo_rep_int = 50000;
int32 mo_single_int = 50001;
}
message TestFieldOptionsInt {
string field1 = 2 [(fo_rep_int) = 1, (fo_rep_int) = 2];
string field2 = 1 [(fo_single_int) = 3];
}
message TestMessageOptionsInt {
option (mo_rep_int) = 1;
option (mo_rep_int) = 2;
option (mo_single_int) = 3;
}
//Message based options including nested sub messages (both single and repeated)
//for fields and messages
message Msg {
int32 value = 1;
repeated int32 rep_value = 2;
SubMsg nested = 3;
repeated SubMsg rep_nested = 4;
}
message SubMsg {
string value = 1;
SubMsg nested = 2;
}
extend google.protobuf.FieldOptions {
repeated Msg fo_rep_msg = 50002;
Msg fo_single_msg = 50003;
}
extend google.protobuf.MessageOptions {
repeated Msg mo_rep_msg = 50002;
Msg mo_single_msg = 50003;
}
extend google.protobuf.MethodOptions {
repeated Msg method_rep_msg = 50002;
Msg method_single_msg = 50003;
}
message TestFieldOptionsMsg {
string field1 = 1 [(fo_rep_msg) = {value: 1 rep_value: 2 rep_value: 3}, (fo_rep_msg) = {value: 4 rep_value: 5 rep_value: 6}];
string field2 = 2 [(fo_single_msg).value = 7, (fo_single_msg).rep_value = 8, (fo_single_msg).rep_value = 9];
}
message TestMessageOptionsMsg {
option (mo_rep_msg) = {
value: 1
rep_value: 2
rep_value: 3
};
option (mo_rep_msg) = {
value: 4
rep_value: 5
rep_value: 6
};
option (mo_single_msg).value = 7;
option (mo_single_msg).rep_value = 8;
option (mo_single_msg).rep_value = 9;
}
message TestFieldOptionsNested {
string field1 = 1 [(fo_rep_msg) = {value: 1 nested { nested {value: "x"} } rep_nested { value: "y"} rep_nested { value: "z" } rep_value: 3}, (fo_rep_msg) = { nested { value: "w" }}];
string field2 = 2 [(fo_single_msg).nested.value = "x", (fo_single_msg).rep_nested = {value : "x"}, (fo_single_msg).rep_nested = {value : "y"}];
string field3 = 3 [(fo_single_msg).nested = {value: "x" nested {nested{value: "y"}}}];
}
message TestMessageOptionsNested {
option (mo_rep_msg) = {
value: 1
nested {
nested {
value: "x"
}
}
rep_nested {
value: "y"
}
rep_nested {
value: "z"
}
rep_value: 3
};
option (mo_rep_msg) = {
nested {
value: "w"
}
};
option (mo_single_msg).nested.value = "x";
option (mo_single_msg).rep_nested = {value : "x" nested {nested{value: "y"}}};
option (mo_single_msg).rep_nested = {value : "y"};
}
service TestOptionsService {
rpc TestOptionsRpc(Msg) returns (Msg) {
option (method_rep_msg) = {
value: 1
nested {
nested {
value: "x"
}
}
rep_nested {
value: "y"
}
rep_nested {
value: "z"
}
rep_value: 3
};
option (method_rep_msg) = {
nested {
value: "w"
}
};
option (method_single_msg).nested.value = "x";
option (method_single_msg).rep_nested = {value : "x" nested {nested{value: "y"}}};
option (method_single_msg).rep_nested = {value : "y"};
}
}