public class ContextInterceptor implements ServerInterceptor {
@Override
public <ReqT, RespT> Listener<ReqT> interceptCall(
ServerCall<ReqT, RespT> call,
Metadata headers,
ServerCallHandler<ReqT, RespT> next) {
String id = headers.get(METADATA_KEY);
Context ctx = Context.current().withValue(CONTEXT_KEY, id);
return Contexts.interceptCall(ctx, call, headers, next);
}
}
public void sayHello(HelloRequest request, StreamObserver<HelloReply> responseObserver) {
HelloReply reply = HelloReply.newBuilder()
.setMessage("name = " + request.getName() + ", id = " + Keys.CONTEXT_KEY.get())
.build();
responseObserver.onNext(reply);
responseObserver.onCompleted();
}