25 using grpc::reflection::v1alpha::ErrorResponse;
26 using grpc::reflection::v1alpha::ListServiceResponse;
27 using grpc::reflection::v1alpha::ServerReflection;
28 using grpc::reflection::v1alpha::ServerReflectionRequest;
29 using grpc::reflection::v1alpha::ServerReflectionResponse;
34 std::unique_ptr<ServerReflection::Stub>
stub)
38 const std::shared_ptr<grpc::Channel>&
channel)
48 "Reflection request not implemented; "
49 "is the ServerReflection service enabled?\n");
52 "ServerReflectionInfo rpc failed. Error code: %d, message: %s, "
54 static_cast<int>(
status.error_code()),
55 status.error_message().c_str(),
72 ServerReflectionRequest
request;
80 if (
response.message_response_case() ==
81 ServerReflectionResponse::MessageResponseCase::kFileDescriptorResponse) {
83 }
else if (
response.message_response_case() ==
84 ServerReflectionResponse::MessageResponseCase::kErrorResponse) {
91 "Error on FindFileByName(%s)\n\tError code: %d\n"
92 "\tError Message: %s",
94 error.error_message().c_str());
99 "Error on FindFileByName(%s) response type\n"
100 "\tExpecting: %d\n\tReceived: %d",
102 ServerReflectionResponse::MessageResponseCase::kFileDescriptorResponse,
119 ServerReflectionRequest
request;
120 request.set_file_containing_symbol(symbol_name);
127 if (
response.message_response_case() ==
128 ServerReflectionResponse::MessageResponseCase::kFileDescriptorResponse) {
130 }
else if (
response.message_response_case() ==
131 ServerReflectionResponse::MessageResponseCase::kErrorResponse) {
136 "NOT_FOUND from server for FindFileContainingSymbol(%s)",
137 symbol_name.c_str());
140 "Error on FindFileContainingSymbol(%s)\n"
141 "\tError code: %d\n\tError Message: %s",
142 symbol_name.c_str(),
error.error_code(),
143 error.error_message().c_str());
148 "Error on FindFileContainingSymbol(%s) response type\n"
149 "\tExpecting: %d\n\tReceived: %d",
151 ServerReflectionResponse::MessageResponseCase::kFileDescriptorResponse,
172 ServerReflectionRequest
request;
173 request.mutable_file_containing_extension()->set_containing_type(
175 request.mutable_file_containing_extension()->set_extension_number(
183 if (
response.message_response_case() ==
184 ServerReflectionResponse::MessageResponseCase::kFileDescriptorResponse) {
186 }
else if (
response.message_response_case() ==
187 ServerReflectionResponse::MessageResponseCase::kErrorResponse) {
196 "NOT_FOUND from server for FindFileContainingExtension(%s, %d)",
200 "Error on FindFileContainingExtension(%s, %d)\n"
201 "\tError code: %d\n\tError Message: %s",
203 error.error_message().c_str());
208 "Error on FindFileContainingExtension(%s, %d) response type\n"
209 "\tExpecting: %d\n\tReceived: %d",
211 ServerReflectionResponse::MessageResponseCase::kFileDescriptorResponse,
220 const string& extendee_type, std::vector<int>*
output) {
227 ServerReflectionRequest
request;
228 request.set_all_extension_numbers_of_type(extendee_type);
235 if (
response.message_response_case() ==
236 ServerReflectionResponse::MessageResponseCase::
237 kAllExtensionNumbersResponse) {
238 auto number =
response.all_extension_numbers_response().extension_number();
242 }
else if (
response.message_response_case() ==
243 ServerReflectionResponse::MessageResponseCase::kErrorResponse) {
246 gpr_log(
GPR_INFO,
"NOT_FOUND from server for FindAllExtensionNumbers(%s)",
247 extendee_type.c_str());
250 "Error on FindAllExtensionNumbersExtension(%s)\n"
251 "\tError code: %d\n\tError Message: %s",
252 extendee_type.c_str(),
error.error_code(),
253 error.error_message().c_str());
260 std::vector<std::string>*
output) {
261 ServerReflectionRequest
request;
269 if (
response.message_response_case() ==
270 ServerReflectionResponse::MessageResponseCase::kListServicesResponse) {
271 const ListServiceResponse& ls_response =
response.list_services_response();
272 for (
int i = 0;
i < ls_response.service_size(); ++
i) {
273 (*output).push_back(ls_response.service(
i).name());
276 }
else if (
response.message_response_case() ==
277 ServerReflectionResponse::MessageResponseCase::kErrorResponse) {
280 "Error on GetServices()\n\tError code: %d\n"
281 "\tError Message: %s",
282 error.error_code(),
error.error_message().c_str());
286 "Error on GetServices() response type\n\tExpecting: %d\n\tReceived: %d",
287 ServerReflectionResponse::MessageResponseCase::kListServicesResponse,
297 file_desc_proto.ParseFromString(byte_fd_proto);
298 return file_desc_proto;
302 const grpc::reflection::v1alpha::FileDescriptorResponse&
response) {
303 for (
int i = 0;
i <
response.file_descriptor_proto_size(); ++
i) {
313 std::shared_ptr<ProtoReflectionDescriptorDatabase::ClientStream>
322 const ServerReflectionRequest&
request,
323 ServerReflectionResponse&
response) {
324 bool success =
false;