grpc-tools 1.30.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +12 -0
  3. data/bin/grpc_tools_ruby_protoc +33 -0
  4. data/bin/grpc_tools_ruby_protoc_plugin +26 -0
  5. data/bin/x86-linux/google/protobuf/any.proto +155 -0
  6. data/bin/x86-linux/google/protobuf/api.proto +210 -0
  7. data/bin/x86-linux/google/protobuf/compiler/plugin.proto +178 -0
  8. data/bin/x86-linux/google/protobuf/descriptor.proto +909 -0
  9. data/bin/x86-linux/google/protobuf/duration.proto +116 -0
  10. data/bin/x86-linux/google/protobuf/empty.proto +52 -0
  11. data/bin/x86-linux/google/protobuf/field_mask.proto +245 -0
  12. data/bin/x86-linux/google/protobuf/source_context.proto +48 -0
  13. data/bin/x86-linux/google/protobuf/struct.proto +95 -0
  14. data/bin/x86-linux/google/protobuf/timestamp.proto +138 -0
  15. data/bin/x86-linux/google/protobuf/type.proto +187 -0
  16. data/bin/x86-linux/google/protobuf/wrappers.proto +123 -0
  17. data/bin/x86-linux/grpc_ruby_plugin +0 -0
  18. data/bin/x86-linux/protoc +0 -0
  19. data/bin/x86-macos/google/protobuf/any.proto +155 -0
  20. data/bin/x86-macos/google/protobuf/api.proto +210 -0
  21. data/bin/x86-macos/google/protobuf/compiler/plugin.proto +178 -0
  22. data/bin/x86-macos/google/protobuf/descriptor.proto +909 -0
  23. data/bin/x86-macos/google/protobuf/duration.proto +116 -0
  24. data/bin/x86-macos/google/protobuf/empty.proto +52 -0
  25. data/bin/x86-macos/google/protobuf/field_mask.proto +245 -0
  26. data/bin/x86-macos/google/protobuf/source_context.proto +48 -0
  27. data/bin/x86-macos/google/protobuf/struct.proto +95 -0
  28. data/bin/x86-macos/google/protobuf/timestamp.proto +138 -0
  29. data/bin/x86-macos/google/protobuf/type.proto +187 -0
  30. data/bin/x86-macos/google/protobuf/wrappers.proto +123 -0
  31. data/bin/x86-macos/grpc_ruby_plugin +0 -0
  32. data/bin/x86-macos/protoc +0 -0
  33. data/bin/x86-windows/google/protobuf/any.proto +155 -0
  34. data/bin/x86-windows/google/protobuf/api.proto +210 -0
  35. data/bin/x86-windows/google/protobuf/compiler/plugin.proto +178 -0
  36. data/bin/x86-windows/google/protobuf/descriptor.proto +909 -0
  37. data/bin/x86-windows/google/protobuf/duration.proto +116 -0
  38. data/bin/x86-windows/google/protobuf/empty.proto +52 -0
  39. data/bin/x86-windows/google/protobuf/field_mask.proto +245 -0
  40. data/bin/x86-windows/google/protobuf/source_context.proto +48 -0
  41. data/bin/x86-windows/google/protobuf/struct.proto +95 -0
  42. data/bin/x86-windows/google/protobuf/timestamp.proto +138 -0
  43. data/bin/x86-windows/google/protobuf/type.proto +187 -0
  44. data/bin/x86-windows/google/protobuf/wrappers.proto +123 -0
  45. data/bin/x86-windows/grpc_ruby_plugin.exe +0 -0
  46. data/bin/x86-windows/protoc.exe +0 -0
  47. data/bin/x86_64-linux/google/protobuf/any.proto +155 -0
  48. data/bin/x86_64-linux/google/protobuf/api.proto +210 -0
  49. data/bin/x86_64-linux/google/protobuf/compiler/plugin.proto +178 -0
  50. data/bin/x86_64-linux/google/protobuf/descriptor.proto +909 -0
  51. data/bin/x86_64-linux/google/protobuf/duration.proto +116 -0
  52. data/bin/x86_64-linux/google/protobuf/empty.proto +52 -0
  53. data/bin/x86_64-linux/google/protobuf/field_mask.proto +245 -0
  54. data/bin/x86_64-linux/google/protobuf/source_context.proto +48 -0
  55. data/bin/x86_64-linux/google/protobuf/struct.proto +95 -0
  56. data/bin/x86_64-linux/google/protobuf/timestamp.proto +138 -0
  57. data/bin/x86_64-linux/google/protobuf/type.proto +187 -0
  58. data/bin/x86_64-linux/google/protobuf/wrappers.proto +123 -0
  59. data/bin/x86_64-linux/grpc_ruby_plugin +0 -0
  60. data/bin/x86_64-linux/protoc +0 -0
  61. data/bin/x86_64-macos/google/protobuf/any.proto +155 -0
  62. data/bin/x86_64-macos/google/protobuf/api.proto +210 -0
  63. data/bin/x86_64-macos/google/protobuf/compiler/plugin.proto +178 -0
  64. data/bin/x86_64-macos/google/protobuf/descriptor.proto +909 -0
  65. data/bin/x86_64-macos/google/protobuf/duration.proto +116 -0
  66. data/bin/x86_64-macos/google/protobuf/empty.proto +52 -0
  67. data/bin/x86_64-macos/google/protobuf/field_mask.proto +245 -0
  68. data/bin/x86_64-macos/google/protobuf/source_context.proto +48 -0
  69. data/bin/x86_64-macos/google/protobuf/struct.proto +95 -0
  70. data/bin/x86_64-macos/google/protobuf/timestamp.proto +138 -0
  71. data/bin/x86_64-macos/google/protobuf/type.proto +187 -0
  72. data/bin/x86_64-macos/google/protobuf/wrappers.proto +123 -0
  73. data/bin/x86_64-macos/grpc_ruby_plugin +0 -0
  74. data/bin/x86_64-macos/protoc +0 -0
  75. data/bin/x86_64-windows/google/protobuf/any.proto +155 -0
  76. data/bin/x86_64-windows/google/protobuf/api.proto +210 -0
  77. data/bin/x86_64-windows/google/protobuf/compiler/plugin.proto +178 -0
  78. data/bin/x86_64-windows/google/protobuf/descriptor.proto +909 -0
  79. data/bin/x86_64-windows/google/protobuf/duration.proto +116 -0
  80. data/bin/x86_64-windows/google/protobuf/empty.proto +52 -0
  81. data/bin/x86_64-windows/google/protobuf/field_mask.proto +245 -0
  82. data/bin/x86_64-windows/google/protobuf/source_context.proto +48 -0
  83. data/bin/x86_64-windows/google/protobuf/struct.proto +95 -0
  84. data/bin/x86_64-windows/google/protobuf/timestamp.proto +138 -0
  85. data/bin/x86_64-windows/google/protobuf/type.proto +187 -0
  86. data/bin/x86_64-windows/google/protobuf/wrappers.proto +123 -0
  87. data/bin/x86_64-windows/grpc_ruby_plugin.exe +0 -0
  88. data/bin/x86_64-windows/protoc.exe +0 -0
  89. data/platform_check.rb +39 -0
  90. data/version.rb +19 -0
  91. metadata +133 -0
@@ -0,0 +1,155 @@
1
+ // Protocol Buffers - Google's data interchange format
2
+ // Copyright 2008 Google Inc. All rights reserved.
3
+ // https://developers.google.com/protocol-buffers/
4
+ //
5
+ // Redistribution and use in source and binary forms, with or without
6
+ // modification, are permitted provided that the following conditions are
7
+ // met:
8
+ //
9
+ // * Redistributions of source code must retain the above copyright
10
+ // notice, this list of conditions and the following disclaimer.
11
+ // * Redistributions in binary form must reproduce the above
12
+ // copyright notice, this list of conditions and the following disclaimer
13
+ // in the documentation and/or other materials provided with the
14
+ // distribution.
15
+ // * Neither the name of Google Inc. nor the names of its
16
+ // contributors may be used to endorse or promote products derived from
17
+ // this software without specific prior written permission.
18
+ //
19
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+
31
+ syntax = "proto3";
32
+
33
+ package google.protobuf;
34
+
35
+ option csharp_namespace = "Google.Protobuf.WellKnownTypes";
36
+ option go_package = "github.com/golang/protobuf/ptypes/any";
37
+ option java_package = "com.google.protobuf";
38
+ option java_outer_classname = "AnyProto";
39
+ option java_multiple_files = true;
40
+ option objc_class_prefix = "GPB";
41
+
42
+ // `Any` contains an arbitrary serialized protocol buffer message along with a
43
+ // URL that describes the type of the serialized message.
44
+ //
45
+ // Protobuf library provides support to pack/unpack Any values in the form
46
+ // of utility functions or additional generated methods of the Any type.
47
+ //
48
+ // Example 1: Pack and unpack a message in C++.
49
+ //
50
+ // Foo foo = ...;
51
+ // Any any;
52
+ // any.PackFrom(foo);
53
+ // ...
54
+ // if (any.UnpackTo(&foo)) {
55
+ // ...
56
+ // }
57
+ //
58
+ // Example 2: Pack and unpack a message in Java.
59
+ //
60
+ // Foo foo = ...;
61
+ // Any any = Any.pack(foo);
62
+ // ...
63
+ // if (any.is(Foo.class)) {
64
+ // foo = any.unpack(Foo.class);
65
+ // }
66
+ //
67
+ // Example 3: Pack and unpack a message in Python.
68
+ //
69
+ // foo = Foo(...)
70
+ // any = Any()
71
+ // any.Pack(foo)
72
+ // ...
73
+ // if any.Is(Foo.DESCRIPTOR):
74
+ // any.Unpack(foo)
75
+ // ...
76
+ //
77
+ // Example 4: Pack and unpack a message in Go
78
+ //
79
+ // foo := &pb.Foo{...}
80
+ // any, err := ptypes.MarshalAny(foo)
81
+ // ...
82
+ // foo := &pb.Foo{}
83
+ // if err := ptypes.UnmarshalAny(any, foo); err != nil {
84
+ // ...
85
+ // }
86
+ //
87
+ // The pack methods provided by protobuf library will by default use
88
+ // 'type.googleapis.com/full.type.name' as the type URL and the unpack
89
+ // methods only use the fully qualified type name after the last '/'
90
+ // in the type URL, for example "foo.bar.com/x/y.z" will yield type
91
+ // name "y.z".
92
+ //
93
+ //
94
+ // JSON
95
+ // ====
96
+ // The JSON representation of an `Any` value uses the regular
97
+ // representation of the deserialized, embedded message, with an
98
+ // additional field `@type` which contains the type URL. Example:
99
+ //
100
+ // package google.profile;
101
+ // message Person {
102
+ // string first_name = 1;
103
+ // string last_name = 2;
104
+ // }
105
+ //
106
+ // {
107
+ // "@type": "type.googleapis.com/google.profile.Person",
108
+ // "firstName": <string>,
109
+ // "lastName": <string>
110
+ // }
111
+ //
112
+ // If the embedded message type is well-known and has a custom JSON
113
+ // representation, that representation will be embedded adding a field
114
+ // `value` which holds the custom JSON in addition to the `@type`
115
+ // field. Example (for message [google.protobuf.Duration][]):
116
+ //
117
+ // {
118
+ // "@type": "type.googleapis.com/google.protobuf.Duration",
119
+ // "value": "1.212s"
120
+ // }
121
+ //
122
+ message Any {
123
+ // A URL/resource name that uniquely identifies the type of the serialized
124
+ // protocol buffer message. This string must contain at least
125
+ // one "/" character. The last segment of the URL's path must represent
126
+ // the fully qualified name of the type (as in
127
+ // `path/google.protobuf.Duration`). The name should be in a canonical form
128
+ // (e.g., leading "." is not accepted).
129
+ //
130
+ // In practice, teams usually precompile into the binary all types that they
131
+ // expect it to use in the context of Any. However, for URLs which use the
132
+ // scheme `http`, `https`, or no scheme, one can optionally set up a type
133
+ // server that maps type URLs to message definitions as follows:
134
+ //
135
+ // * If no scheme is provided, `https` is assumed.
136
+ // * An HTTP GET on the URL must yield a [google.protobuf.Type][]
137
+ // value in binary format, or produce an error.
138
+ // * Applications are allowed to cache lookup results based on the
139
+ // URL, or have them precompiled into a binary to avoid any
140
+ // lookup. Therefore, binary compatibility needs to be preserved
141
+ // on changes to types. (Use versioned type names to manage
142
+ // breaking changes.)
143
+ //
144
+ // Note: this functionality is not currently available in the official
145
+ // protobuf release, and it is not used for type URLs beginning with
146
+ // type.googleapis.com.
147
+ //
148
+ // Schemes other than `http`, `https` (or the empty scheme) might be
149
+ // used with implementation specific semantics.
150
+ //
151
+ string type_url = 1;
152
+
153
+ // Must be a valid serialized protocol buffer of the above specified type.
154
+ bytes value = 2;
155
+ }
@@ -0,0 +1,210 @@
1
+ // Protocol Buffers - Google's data interchange format
2
+ // Copyright 2008 Google Inc. All rights reserved.
3
+ // https://developers.google.com/protocol-buffers/
4
+ //
5
+ // Redistribution and use in source and binary forms, with or without
6
+ // modification, are permitted provided that the following conditions are
7
+ // met:
8
+ //
9
+ // * Redistributions of source code must retain the above copyright
10
+ // notice, this list of conditions and the following disclaimer.
11
+ // * Redistributions in binary form must reproduce the above
12
+ // copyright notice, this list of conditions and the following disclaimer
13
+ // in the documentation and/or other materials provided with the
14
+ // distribution.
15
+ // * Neither the name of Google Inc. nor the names of its
16
+ // contributors may be used to endorse or promote products derived from
17
+ // this software without specific prior written permission.
18
+ //
19
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+
31
+ syntax = "proto3";
32
+
33
+ package google.protobuf;
34
+
35
+ import "google/protobuf/source_context.proto";
36
+ import "google/protobuf/type.proto";
37
+
38
+ option csharp_namespace = "Google.Protobuf.WellKnownTypes";
39
+ option java_package = "com.google.protobuf";
40
+ option java_outer_classname = "ApiProto";
41
+ option java_multiple_files = true;
42
+ option objc_class_prefix = "GPB";
43
+ option go_package = "google.golang.org/genproto/protobuf/api;api";
44
+
45
+ // Api is a light-weight descriptor for an API Interface.
46
+ //
47
+ // Interfaces are also described as "protocol buffer services" in some contexts,
48
+ // such as by the "service" keyword in a .proto file, but they are different
49
+ // from API Services, which represent a concrete implementation of an interface
50
+ // as opposed to simply a description of methods and bindings. They are also
51
+ // sometimes simply referred to as "APIs" in other contexts, such as the name of
52
+ // this message itself. See https://cloud.google.com/apis/design/glossary for
53
+ // detailed terminology.
54
+ message Api {
55
+
56
+ // The fully qualified name of this interface, including package name
57
+ // followed by the interface's simple name.
58
+ string name = 1;
59
+
60
+ // The methods of this interface, in unspecified order.
61
+ repeated Method methods = 2;
62
+
63
+ // Any metadata attached to the interface.
64
+ repeated Option options = 3;
65
+
66
+ // A version string for this interface. If specified, must have the form
67
+ // `major-version.minor-version`, as in `1.10`. If the minor version is
68
+ // omitted, it defaults to zero. If the entire version field is empty, the
69
+ // major version is derived from the package name, as outlined below. If the
70
+ // field is not empty, the version in the package name will be verified to be
71
+ // consistent with what is provided here.
72
+ //
73
+ // The versioning schema uses [semantic
74
+ // versioning](http://semver.org) where the major version number
75
+ // indicates a breaking change and the minor version an additive,
76
+ // non-breaking change. Both version numbers are signals to users
77
+ // what to expect from different versions, and should be carefully
78
+ // chosen based on the product plan.
79
+ //
80
+ // The major version is also reflected in the package name of the
81
+ // interface, which must end in `v<major-version>`, as in
82
+ // `google.feature.v1`. For major versions 0 and 1, the suffix can
83
+ // be omitted. Zero major versions must only be used for
84
+ // experimental, non-GA interfaces.
85
+ //
86
+ //
87
+ string version = 4;
88
+
89
+ // Source context for the protocol buffer service represented by this
90
+ // message.
91
+ SourceContext source_context = 5;
92
+
93
+ // Included interfaces. See [Mixin][].
94
+ repeated Mixin mixins = 6;
95
+
96
+ // The source syntax of the service.
97
+ Syntax syntax = 7;
98
+ }
99
+
100
+ // Method represents a method of an API interface.
101
+ message Method {
102
+
103
+ // The simple name of this method.
104
+ string name = 1;
105
+
106
+ // A URL of the input message type.
107
+ string request_type_url = 2;
108
+
109
+ // If true, the request is streamed.
110
+ bool request_streaming = 3;
111
+
112
+ // The URL of the output message type.
113
+ string response_type_url = 4;
114
+
115
+ // If true, the response is streamed.
116
+ bool response_streaming = 5;
117
+
118
+ // Any metadata attached to the method.
119
+ repeated Option options = 6;
120
+
121
+ // The source syntax of this method.
122
+ Syntax syntax = 7;
123
+ }
124
+
125
+ // Declares an API Interface to be included in this interface. The including
126
+ // interface must redeclare all the methods from the included interface, but
127
+ // documentation and options are inherited as follows:
128
+ //
129
+ // - If after comment and whitespace stripping, the documentation
130
+ // string of the redeclared method is empty, it will be inherited
131
+ // from the original method.
132
+ //
133
+ // - Each annotation belonging to the service config (http,
134
+ // visibility) which is not set in the redeclared method will be
135
+ // inherited.
136
+ //
137
+ // - If an http annotation is inherited, the path pattern will be
138
+ // modified as follows. Any version prefix will be replaced by the
139
+ // version of the including interface plus the [root][] path if
140
+ // specified.
141
+ //
142
+ // Example of a simple mixin:
143
+ //
144
+ // package google.acl.v1;
145
+ // service AccessControl {
146
+ // // Get the underlying ACL object.
147
+ // rpc GetAcl(GetAclRequest) returns (Acl) {
148
+ // option (google.api.http).get = "/v1/{resource=**}:getAcl";
149
+ // }
150
+ // }
151
+ //
152
+ // package google.storage.v2;
153
+ // service Storage {
154
+ // rpc GetAcl(GetAclRequest) returns (Acl);
155
+ //
156
+ // // Get a data record.
157
+ // rpc GetData(GetDataRequest) returns (Data) {
158
+ // option (google.api.http).get = "/v2/{resource=**}";
159
+ // }
160
+ // }
161
+ //
162
+ // Example of a mixin configuration:
163
+ //
164
+ // apis:
165
+ // - name: google.storage.v2.Storage
166
+ // mixins:
167
+ // - name: google.acl.v1.AccessControl
168
+ //
169
+ // The mixin construct implies that all methods in `AccessControl` are
170
+ // also declared with same name and request/response types in
171
+ // `Storage`. A documentation generator or annotation processor will
172
+ // see the effective `Storage.GetAcl` method after inherting
173
+ // documentation and annotations as follows:
174
+ //
175
+ // service Storage {
176
+ // // Get the underlying ACL object.
177
+ // rpc GetAcl(GetAclRequest) returns (Acl) {
178
+ // option (google.api.http).get = "/v2/{resource=**}:getAcl";
179
+ // }
180
+ // ...
181
+ // }
182
+ //
183
+ // Note how the version in the path pattern changed from `v1` to `v2`.
184
+ //
185
+ // If the `root` field in the mixin is specified, it should be a
186
+ // relative path under which inherited HTTP paths are placed. Example:
187
+ //
188
+ // apis:
189
+ // - name: google.storage.v2.Storage
190
+ // mixins:
191
+ // - name: google.acl.v1.AccessControl
192
+ // root: acls
193
+ //
194
+ // This implies the following inherited HTTP annotation:
195
+ //
196
+ // service Storage {
197
+ // // Get the underlying ACL object.
198
+ // rpc GetAcl(GetAclRequest) returns (Acl) {
199
+ // option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";
200
+ // }
201
+ // ...
202
+ // }
203
+ message Mixin {
204
+ // The fully qualified name of the interface which is included.
205
+ string name = 1;
206
+
207
+ // If non-empty specifies a path under which inherited HTTP paths
208
+ // are rooted.
209
+ string root = 2;
210
+ }
@@ -0,0 +1,178 @@
1
+ // Protocol Buffers - Google's data interchange format
2
+ // Copyright 2008 Google Inc. All rights reserved.
3
+ // https://developers.google.com/protocol-buffers/
4
+ //
5
+ // Redistribution and use in source and binary forms, with or without
6
+ // modification, are permitted provided that the following conditions are
7
+ // met:
8
+ //
9
+ // * Redistributions of source code must retain the above copyright
10
+ // notice, this list of conditions and the following disclaimer.
11
+ // * Redistributions in binary form must reproduce the above
12
+ // copyright notice, this list of conditions and the following disclaimer
13
+ // in the documentation and/or other materials provided with the
14
+ // distribution.
15
+ // * Neither the name of Google Inc. nor the names of its
16
+ // contributors may be used to endorse or promote products derived from
17
+ // this software without specific prior written permission.
18
+ //
19
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+
31
+ // Author: kenton@google.com (Kenton Varda)
32
+ //
33
+ // WARNING: The plugin interface is currently EXPERIMENTAL and is subject to
34
+ // change.
35
+ //
36
+ // protoc (aka the Protocol Compiler) can be extended via plugins. A plugin is
37
+ // just a program that reads a CodeGeneratorRequest from stdin and writes a
38
+ // CodeGeneratorResponse to stdout.
39
+ //
40
+ // Plugins written using C++ can use google/protobuf/compiler/plugin.h instead
41
+ // of dealing with the raw protocol defined here.
42
+ //
43
+ // A plugin executable needs only to be placed somewhere in the path. The
44
+ // plugin should be named "protoc-gen-$NAME", and will then be used when the
45
+ // flag "--${NAME}_out" is passed to protoc.
46
+
47
+ syntax = "proto2";
48
+
49
+ package google.protobuf.compiler;
50
+ option java_package = "com.google.protobuf.compiler";
51
+ option java_outer_classname = "PluginProtos";
52
+
53
+ option go_package = "github.com/golang/protobuf/protoc-gen-go/plugin;plugin_go";
54
+
55
+ import "google/protobuf/descriptor.proto";
56
+
57
+ // The version number of protocol compiler.
58
+ message Version {
59
+ optional int32 major = 1;
60
+ optional int32 minor = 2;
61
+ optional int32 patch = 3;
62
+ // A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should
63
+ // be empty for mainline stable releases.
64
+ optional string suffix = 4;
65
+ }
66
+
67
+ // An encoded CodeGeneratorRequest is written to the plugin's stdin.
68
+ message CodeGeneratorRequest {
69
+ // The .proto files that were explicitly listed on the command-line. The
70
+ // code generator should generate code only for these files. Each file's
71
+ // descriptor will be included in proto_file, below.
72
+ repeated string file_to_generate = 1;
73
+
74
+ // The generator parameter passed on the command-line.
75
+ optional string parameter = 2;
76
+
77
+ // FileDescriptorProtos for all files in files_to_generate and everything
78
+ // they import. The files will appear in topological order, so each file
79
+ // appears before any file that imports it.
80
+ //
81
+ // protoc guarantees that all proto_files will be written after
82
+ // the fields above, even though this is not technically guaranteed by the
83
+ // protobuf wire format. This theoretically could allow a plugin to stream
84
+ // in the FileDescriptorProtos and handle them one by one rather than read
85
+ // the entire set into memory at once. However, as of this writing, this
86
+ // is not similarly optimized on protoc's end -- it will store all fields in
87
+ // memory at once before sending them to the plugin.
88
+ //
89
+ // Type names of fields and extensions in the FileDescriptorProto are always
90
+ // fully qualified.
91
+ repeated FileDescriptorProto proto_file = 15;
92
+
93
+ // The version number of protocol compiler.
94
+ optional Version compiler_version = 3;
95
+
96
+ }
97
+
98
+ // The plugin writes an encoded CodeGeneratorResponse to stdout.
99
+ message CodeGeneratorResponse {
100
+ // Error message. If non-empty, code generation failed. The plugin process
101
+ // should exit with status code zero even if it reports an error in this way.
102
+ //
103
+ // This should be used to indicate errors in .proto files which prevent the
104
+ // code generator from generating correct code. Errors which indicate a
105
+ // problem in protoc itself -- such as the input CodeGeneratorRequest being
106
+ // unparseable -- should be reported by writing a message to stderr and
107
+ // exiting with a non-zero status code.
108
+ optional string error = 1;
109
+
110
+ // A bitmask of supported features that the code generator supports.
111
+ // This is a bitwise "or" of values from the Feature enum.
112
+ optional uint64 supported_features = 2;
113
+
114
+ // Sync with code_generator.h.
115
+ enum Feature {
116
+ FEATURE_NONE = 0;
117
+ FEATURE_PROTO3_OPTIONAL = 1;
118
+ }
119
+
120
+ // Represents a single generated file.
121
+ message File {
122
+ // The file name, relative to the output directory. The name must not
123
+ // contain "." or ".." components and must be relative, not be absolute (so,
124
+ // the file cannot lie outside the output directory). "/" must be used as
125
+ // the path separator, not "\".
126
+ //
127
+ // If the name is omitted, the content will be appended to the previous
128
+ // file. This allows the generator to break large files into small chunks,
129
+ // and allows the generated text to be streamed back to protoc so that large
130
+ // files need not reside completely in memory at one time. Note that as of
131
+ // this writing protoc does not optimize for this -- it will read the entire
132
+ // CodeGeneratorResponse before writing files to disk.
133
+ optional string name = 1;
134
+
135
+ // If non-empty, indicates that the named file should already exist, and the
136
+ // content here is to be inserted into that file at a defined insertion
137
+ // point. This feature allows a code generator to extend the output
138
+ // produced by another code generator. The original generator may provide
139
+ // insertion points by placing special annotations in the file that look
140
+ // like:
141
+ // @@protoc_insertion_point(NAME)
142
+ // The annotation can have arbitrary text before and after it on the line,
143
+ // which allows it to be placed in a comment. NAME should be replaced with
144
+ // an identifier naming the point -- this is what other generators will use
145
+ // as the insertion_point. Code inserted at this point will be placed
146
+ // immediately above the line containing the insertion point (thus multiple
147
+ // insertions to the same point will come out in the order they were added).
148
+ // The double-@ is intended to make it unlikely that the generated code
149
+ // could contain things that look like insertion points by accident.
150
+ //
151
+ // For example, the C++ code generator places the following line in the
152
+ // .pb.h files that it generates:
153
+ // // @@protoc_insertion_point(namespace_scope)
154
+ // This line appears within the scope of the file's package namespace, but
155
+ // outside of any particular class. Another plugin can then specify the
156
+ // insertion_point "namespace_scope" to generate additional classes or
157
+ // other declarations that should be placed in this scope.
158
+ //
159
+ // Note that if the line containing the insertion point begins with
160
+ // whitespace, the same whitespace will be added to every line of the
161
+ // inserted text. This is useful for languages like Python, where
162
+ // indentation matters. In these languages, the insertion point comment
163
+ // should be indented the same amount as any inserted code will need to be
164
+ // in order to work correctly in that context.
165
+ //
166
+ // The code generator that generates the initial file and the one which
167
+ // inserts into it must both run as part of a single invocation of protoc.
168
+ // Code generators are executed in the order in which they appear on the
169
+ // command line.
170
+ //
171
+ // If |insertion_point| is present, |name| must also be present.
172
+ optional string insertion_point = 2;
173
+
174
+ // The file contents.
175
+ optional string content = 15;
176
+ }
177
+ repeated File file = 15;
178
+ }