(Map<String, ?> bootstrapOverride)
| 126 | } |
| 127 | |
| 128 | private void startServer(Map<String, ?> bootstrapOverride) throws Exception { |
| 129 | final String[] authority = new String[1]; |
| 130 | ServerInterceptor metadataInterceptor = new ServerInterceptor() { |
| 131 | @Override |
| 132 | public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(ServerCall<ReqT, RespT> call, |
| 133 | Metadata requestHeaders, ServerCallHandler<ReqT, RespT> next) { |
| 134 | authority[0] = call.getAuthority(); |
| 135 | logger.fine("Received following metadata: " + requestHeaders); |
| 136 | |
| 137 | // Make a copy of the headers so that it can be read in a thread-safe manner when copying |
| 138 | // it to the response headers. |
| 139 | Metadata headersToReturn = new Metadata(); |
| 140 | headersToReturn.merge(requestHeaders); |
| 141 | |
| 142 | return next.startCall(new SimpleForwardingServerCall<ReqT, RespT>(call) { |
| 143 | @Override |
| 144 | public void sendHeaders(Metadata responseHeaders) { |
| 145 | responseHeaders.merge(headersToReturn); |
| 146 | super.sendHeaders(responseHeaders); |
| 147 | } |
| 148 | |
| 149 | @Override |
| 150 | public void close(Status status, Metadata trailers) { |
| 151 | super.close(status, trailers); |
| 152 | } |
| 153 | }, requestHeaders); |
| 154 | } |
| 155 | }; |
| 156 | |
| 157 | SimpleServiceGrpc.SimpleServiceImplBase simpleServiceImpl = |
| 158 | new SimpleServiceGrpc.SimpleServiceImplBase() { |
| 159 | @Override |
| 160 | public void unaryRpc( |
| 161 | SimpleRequest request, StreamObserver<SimpleResponse> responseObserver) { |
| 162 | String responseMsg = "Hi, xDS!"; |
| 163 | if (authority[0] != null) { |
| 164 | responseMsg += " Authority= " + authority[0]; |
| 165 | } |
| 166 | SimpleResponse response = |
| 167 | SimpleResponse.newBuilder().setResponseMessage(responseMsg).build(); |
| 168 | responseObserver.onNext(response); |
| 169 | responseObserver.onCompleted(); |
| 170 | } |
| 171 | }; |
| 172 | |
| 173 | XdsServerBuilder serverBuilder = XdsServerBuilder.forPort( |
| 174 | 0, InsecureServerCredentials.create()) |
| 175 | .addService(simpleServiceImpl) |
| 176 | .intercept(metadataInterceptor) |
| 177 | .overrideBootstrapForTest(bootstrapOverride); |
| 178 | server = serverBuilder.build().start(); |
| 179 | logger.log(Level.FINE, "data plane server started"); |
| 180 | } |
| 181 | } |
no test coverage detected