Skip to content

Commit

Permalink
Add support for gRPC reflection (helidon-io#2822)
Browse files Browse the repository at this point in the history
* gRPC reflection support
  • Loading branch information
aseovic committed Apr 26, 2021
1 parent 4721887 commit af02079
Show file tree
Hide file tree
Showing 4 changed files with 610 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019 Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2019, 2021 Oracle and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -33,6 +33,7 @@
import io.grpc.ServerCallHandler;
import io.grpc.ServerInterceptor;
import io.grpc.ServerServiceDefinition;
import io.grpc.protobuf.ProtoFileDescriptorSupplier;
import io.grpc.stub.StreamObserver;

/**
Expand Down Expand Up @@ -72,8 +73,14 @@ static BindableServiceImpl create(ServiceDescriptor descriptor, PriorityBag<Serv
@SuppressWarnings("unchecked")
@Override
public ServerServiceDefinition bindService() {
ServerServiceDefinition.Builder builder = ServerServiceDefinition.builder(descriptor.name());
io.grpc.ServiceDescriptor.Builder serviceDescriptorBuilder = io.grpc.ServiceDescriptor.newBuilder(descriptor.name());
if (descriptor.proto() != null) {
serviceDescriptorBuilder.setSchemaDescriptor((ProtoFileDescriptorSupplier) descriptor::proto);
}
descriptor.methods()
.forEach(method -> serviceDescriptorBuilder.addMethod(method.descriptor()));

ServerServiceDefinition.Builder builder = ServerServiceDefinition.builder(serviceDescriptorBuilder.build());
descriptor.methods()
.forEach(method -> builder.addMethod(method.descriptor(), wrapCallHandler(method)));

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019 Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2019, 2021 Oracle and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -182,6 +182,7 @@ public CompletionStage<GrpcServer> start() {
server = configureNetty(builder)
.directExecutor()
.addService(healthService)
.addService(ProtoReflectionService.newInstance())
.fallbackHandlerRegistry(handlerRegistry)
.build()
.start();
Expand Down
Loading

0 comments on commit af02079

Please sign in to comment.