1
+ // Copyright 2016 gRPC authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ // Service exported by server reflection
16
+
17
+ syntax = "proto3" ;
18
+
19
+ package grpc.reflection.v1alpha ;
20
+
21
+ service ServerReflection {
22
+ // The reflection service is structured as a bidirectional stream, ensuring
23
+ // all related requests go to a single server.
24
+ rpc ServerReflectionInfo (stream ServerReflectionRequest )
25
+ returns (stream ServerReflectionResponse );
26
+ }
27
+
28
+ // The message sent by the client when calling ServerReflectionInfo method.
29
+ message ServerReflectionRequest {
30
+ string host = 1 ;
31
+ // To use reflection service, the client should set one of the following
32
+ // fields in message_request. The server distinguishes requests by their
33
+ // defined field and then handles them using corresponding methods.
34
+ oneof message_request {
35
+ // Find a proto file by the file name.
36
+ string file_by_filename = 3 ;
37
+
38
+ // Find the proto file that declares the given fully-qualified symbol name.
39
+ // This field should be a fully-qualified symbol name
40
+ // (e.g. <package>.<service>[.<method>] or <package>.<type>).
41
+ string file_containing_symbol = 4 ;
42
+
43
+ // Find the proto file which defines an extension extending the given
44
+ // message type with the given field number.
45
+ ExtensionRequest file_containing_extension = 5 ;
46
+
47
+ // Finds the tag numbers used by all known extensions of extendee_type, and
48
+ // appends them to ExtensionNumberResponse in an undefined order.
49
+ // Its corresponding method is best-effort: it's not guaranteed that the
50
+ // reflection service will implement this method, and it's not guaranteed
51
+ // that this method will provide all extensions. Returns
52
+ // StatusCode::UNIMPLEMENTED if it's not implemented.
53
+ // This field should be a fully-qualified type name. The format is
54
+ // <package>.<type>
55
+ string all_extension_numbers_of_type = 6 ;
56
+
57
+ // List the full names of registered services. The content will not be
58
+ // checked.
59
+ string list_services = 7 ;
60
+ }
61
+ }
62
+
63
+ // The type name and extension number sent by the client when requesting
64
+ // file_containing_extension.
65
+ message ExtensionRequest {
66
+ // Fully-qualified type name. The format should be <package>.<type>
67
+ string containing_type = 1 ;
68
+ int32 extension_number = 2 ;
69
+ }
70
+
71
+ // The message sent by the server to answer ServerReflectionInfo method.
72
+ message ServerReflectionResponse {
73
+ string valid_host = 1 ;
74
+ ServerReflectionRequest original_request = 2 ;
75
+ // The server sets one of the following fields according to the
76
+ // message_request in the request.
77
+ oneof message_response {
78
+ // This message is used to answer file_by_filename, file_containing_symbol,
79
+ // file_containing_extension requests with transitive dependencies.
80
+ // As the repeated label is not allowed in oneof fields, we use a
81
+ // FileDescriptorResponse message to encapsulate the repeated fields.
82
+ // The reflection service is allowed to avoid sending FileDescriptorProtos
83
+ // that were previously sent in response to earlier requests in the stream.
84
+ FileDescriptorResponse file_descriptor_response = 4 ;
85
+
86
+ // This message is used to answer all_extension_numbers_of_type requests.
87
+ ExtensionNumberResponse all_extension_numbers_response = 5 ;
88
+
89
+ // This message is used to answer list_services requests.
90
+ ListServiceResponse list_services_response = 6 ;
91
+
92
+ // This message is used when an error occurs.
93
+ ErrorResponse error_response = 7 ;
94
+ }
95
+ }
96
+
97
+ // Serialized FileDescriptorProto messages sent by the server answering
98
+ // a file_by_filename, file_containing_symbol, or file_containing_extension
99
+ // request.
100
+ message FileDescriptorResponse {
101
+ // Serialized FileDescriptorProto messages. We avoid taking a dependency on
102
+ // descriptor.proto, which uses proto2 only features, by making them opaque
103
+ // bytes instead.
104
+ repeated bytes file_descriptor_proto = 1 ;
105
+ }
106
+
107
+ // A list of extension numbers sent by the server answering
108
+ // all_extension_numbers_of_type request.
109
+ message ExtensionNumberResponse {
110
+ // Full name of the base type, including the package name. The format
111
+ // is <package>.<type>
112
+ string base_type_name = 1 ;
113
+ repeated int32 extension_number = 2 ;
114
+ }
115
+
116
+ // A list of ServiceResponse sent by the server answering list_services request.
117
+ message ListServiceResponse {
118
+ // The information of each service may be expanded in the future, so we use
119
+ // ServiceResponse message to encapsulate it.
120
+ repeated ServiceResponse service = 1 ;
121
+ }
122
+
123
+ // The information of a single service used by ListServiceResponse to answer
124
+ // list_services request.
125
+ message ServiceResponse {
126
+ // Full name of a registered service, including its package name. The format
127
+ // is <package>.<service>
128
+ string name = 1 ;
129
+ }
130
+
131
+ // The error code and error message sent by the server when an error occurs.
132
+ message ErrorResponse {
133
+ // This field uses the error codes defined in grpc::StatusCode.
134
+ int32 error_code = 1 ;
135
+ string error_message = 2 ;
136
+ }
0 commit comments