28
28
import io .envoyproxy .envoy .service .status .v3 .ClientStatusDiscoveryServiceGrpc ;
29
29
import io .envoyproxy .envoy .service .status .v3 .ClientStatusRequest ;
30
30
import io .envoyproxy .envoy .service .status .v3 .ClientStatusResponse ;
31
- import io .grpc .ExperimentalApi ;
31
+ import io .grpc .BindableService ;
32
+ import io .grpc .ServerServiceDefinition ;
32
33
import io .grpc .Status ;
33
34
import io .grpc .StatusException ;
34
35
import io .grpc .internal .ObjectPool ;
55
56
*
56
57
* @since 1.37.0
57
58
*/
58
- @ ExperimentalApi ("https://github.com/grpc/grpc-java/issues/8016" )
59
- public final class CsdsService extends
60
- ClientStatusDiscoveryServiceGrpc .ClientStatusDiscoveryServiceImplBase {
59
+ public final class CsdsService implements BindableService {
61
60
private static final Logger logger = Logger .getLogger (CsdsService .class .getName ());
62
61
private final XdsClientPoolFactory xdsClientPoolFactory ;
62
+ private final CsdsServiceInternal delegate = new CsdsServiceInternal ();
63
63
64
64
@ VisibleForTesting
65
65
CsdsService (XdsClientPoolFactory xdsClientPoolFactory ) {
@@ -76,34 +76,43 @@ public static CsdsService newInstance() {
76
76
}
77
77
78
78
@ Override
79
- public void fetchClientStatus (
80
- ClientStatusRequest request , StreamObserver <ClientStatusResponse > responseObserver ) {
81
- if (handleRequest (request , responseObserver )) {
82
- responseObserver .onCompleted ();
83
- }
84
- // TODO(sergiitk): Add a case covering mutating handleRequest return false to true - to verify
85
- // that responseObserver.onCompleted() isn't erroneously called on error.
79
+ public ServerServiceDefinition bindService () {
80
+ return delegate .bindService ();
86
81
}
87
82
88
- @ Override
89
- public StreamObserver <ClientStatusRequest > streamClientStatus (
90
- final StreamObserver <ClientStatusResponse > responseObserver ) {
91
- return new StreamObserver <ClientStatusRequest >() {
92
- @ Override
93
- public void onNext (ClientStatusRequest request ) {
94
- handleRequest (request , responseObserver );
83
+ /** Hide protobuf from being exposed via the API. */
84
+ private final class CsdsServiceInternal
85
+ extends ClientStatusDiscoveryServiceGrpc .ClientStatusDiscoveryServiceImplBase {
86
+ @ Override
87
+ public void fetchClientStatus (
88
+ ClientStatusRequest request , StreamObserver <ClientStatusResponse > responseObserver ) {
89
+ if (handleRequest (request , responseObserver )) {
90
+ responseObserver .onCompleted ();
95
91
}
92
+ // TODO(sergiitk): Add a case covering mutating handleRequest return false to true - to verify
93
+ // that responseObserver.onCompleted() isn't erroneously called on error.
94
+ }
96
95
97
- @ Override
98
- public void onError (Throwable t ) {
99
- onCompleted ();
100
- }
96
+ @ Override
97
+ public StreamObserver <ClientStatusRequest > streamClientStatus (
98
+ final StreamObserver <ClientStatusResponse > responseObserver ) {
99
+ return new StreamObserver <ClientStatusRequest >() {
100
+ @ Override
101
+ public void onNext (ClientStatusRequest request ) {
102
+ handleRequest (request , responseObserver );
103
+ }
101
104
102
- @ Override
103
- public void onCompleted () {
104
- responseObserver .onCompleted ();
105
- }
106
- };
105
+ @ Override
106
+ public void onError (Throwable t ) {
107
+ onCompleted ();
108
+ }
109
+
110
+ @ Override
111
+ public void onCompleted () {
112
+ responseObserver .onCompleted ();
113
+ }
114
+ };
115
+ }
107
116
}
108
117
109
118
private boolean handleRequest (
0 commit comments