MCPcopy Create free account
hub / github.com/grpc/grpc-java / CsdsService

Class CsdsService

xds/src/main/java/io/grpc/xds/CsdsService.java:61–267  ·  view source on GitHub ↗

The CSDS service provides information about the status of a running xDS client. Client Status Discovery Service is a service that exposes xDS config of a given client. See the full design at <a hr

Source from the content-addressed store, hash-verified

59 * @since 1.37.0
60 */
61public final class CsdsService implements BindableService {
62 private static final Logger logger = Logger.getLogger(CsdsService.class.getName());
63 private final XdsClientPoolFactory xdsClientPoolFactory;
64 private final CsdsServiceInternal delegate = new CsdsServiceInternal();
65
66 @VisibleForTesting
67 CsdsService(XdsClientPoolFactory xdsClientPoolFactory) {
68 this.xdsClientPoolFactory = checkNotNull(xdsClientPoolFactory, "xdsClientPoolProvider");
69 }
70
71 private CsdsService() {
72 this(SharedXdsClientPoolProvider.getDefaultProvider());
73 }
74
75 /** Creates an instance. */
76 public static CsdsService newInstance() {
77 return new CsdsService();
78 }
79
80 @Override
81 public ServerServiceDefinition bindService() {
82 return delegate.bindService();
83 }
84
85 /** Hide protobuf from being exposed via the API. */
86 private final class CsdsServiceInternal
87 extends ClientStatusDiscoveryServiceGrpc.ClientStatusDiscoveryServiceImplBase {
88 @Override
89 public void fetchClientStatus(
90 ClientStatusRequest request, StreamObserver<ClientStatusResponse> responseObserver) {
91 if (handleRequest(request, responseObserver)) {
92 responseObserver.onCompleted();
93 }
94 // TODO(sergiitk): Add a case covering mutating handleRequest return false to true - to verify
95 // that responseObserver.onCompleted() isn't erroneously called on error.
96 }
97
98 @Override
99 public StreamObserver<ClientStatusRequest> streamClientStatus(
100 final StreamObserver<ClientStatusResponse> responseObserver) {
101 return new StreamObserver<ClientStatusRequest>() {
102 @Override
103 public void onNext(ClientStatusRequest request) {
104 handleRequest(request, responseObserver);
105 }
106
107 @Override
108 public void onError(Throwable t) {
109 onCompleted();
110 }
111
112 @Override
113 public void onCompleted() {
114 responseObserver.onCompleted();
115 }
116 };
117 }
118 }

Callers

nothing calls this directly

Calls 1

getNameMethod · 0.65

Tested by

no test coverage detected