private static async Task<ServerReflectionResponse> SingleRequestAsync(ServerReflectionClient client, ServerReflectionRequest request) { var call = client.ServerReflectionInfo(); await call.RequestStream.WriteAsync(request); Debug.Assert(await call.ResponseStream.MoveNext()); var response = call.ResponseStream.Current; await call.RequestStream.CompleteAsync(); return response; }
public async static Task ServiceReflection(GrpcChannel channel) { var client = new ServerReflectionClient(channel); Console.WriteLine("Calling reflection service:"); var response = await SingleRequestAsync(client, new ServerReflectionRequest { ListServices = "" // Get all services }); Console.WriteLine("Services:"); foreach (var item in response.ListServicesResponse.Service) { Console.WriteLine("- " + item.Name); } }
static async Task Main(string[] args) { var channel = GrpcChannel.ForAddress("https://localhost:5001"); var client = new ServerReflectionClient(channel); var response = await SingleRequestAsync(client, new ServerReflectionRequest { ListServices = "" // Get all services }); Console.WriteLine("Services:"); foreach (var item in response.ListServicesResponse.Service) { Console.WriteLine("- " + item.Name); } Console.WriteLine("Shutting down"); Console.WriteLine("Press any key to exit..."); Console.ReadKey(); }
static async Task Main(string[] args) { // Server will only support Https on Windows and Linux var credentials = RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ? ChannelCredentials.Insecure : ClientResources.SslCredentials; var channel = new Channel("localhost:50051", credentials); var client = new ServerReflectionClient(channel); var response = await SingleRequestAsync(client, new ServerReflectionRequest { ListServices = "" // Get all services }); Console.WriteLine("Services:"); foreach (var item in response.ListServicesResponse.Service) { Console.WriteLine("- " + item.Name); } Console.WriteLine("Shutting down"); await channel.ShutdownAsync(); Console.WriteLine("Press any key to exit..."); Console.ReadKey(); }