/** Listens to server responses and send requests when the network is free. */ public void call( final BidiStreamObserver<RequestT, ResponseT> bidiObserver, ApiCallContext context) { internalCall( bidiObserver, new ClientStreamReadyObserver<RequestT>() { @Override public void onReady(ClientStream<RequestT> stream) { bidiObserver.onReady(stream); } }, context); }
/** Send requests to the server and listens to responses. */ public ClientStream<RequestT> splitCall( ResponseObserver<ResponseT> responseObserver, ApiCallContext context) { return internalCall( responseObserver, new ClientStreamReadyObserver<RequestT>() { @Override public void onReady(ClientStream<RequestT> stream) { // no op } }, context); }
/** Listens to server responses and send requests when the network is free. */ public void call( final BidiStreamObserver<RequestT, ResponseT> bidiObserver, ApiCallContext context) { internalCall( bidiObserver, new ClientStreamReadyObserver<RequestT>() { @Override public void onReady(ClientStream<RequestT> stream) { bidiObserver.onReady(stream); } }, context); }
/** Send requests to the server and listens to responses. */ public ClientStream<RequestT> splitCall( ResponseObserver<ResponseT> responseObserver, ApiCallContext context) { return internalCall( responseObserver, new ClientStreamReadyObserver<RequestT>() { @Override public void onReady(ClientStream<RequestT> stream) { // no op } }, context); }
@Override public ClientStream<RequestT> internalCall( final ResponseObserver<ResponseT> responseObserver, ClientStreamReadyObserver<RequestT> onReady, ApiCallContext context) { return innerCallable.internalCall( new ExceptionResponseObserver<>(responseObserver, exceptionFactory), onReady, context); } }
@Override public ClientStream<RequestT> internalCall( ResponseObserver<ResponseT> responseObserver, ClientStreamReadyObserver<RequestT> onReady, ApiCallContext thisCallContext) { return BidiStreamingCallable.this.internalCall( responseObserver, onReady, defaultCallContext.merge(thisCallContext)); } };
@Override public ClientStream<RequestT> internalCall( final ResponseObserver<ResponseT> responseObserver, ClientStreamReadyObserver<RequestT> onReady, ApiCallContext context) { return innerCallable.internalCall( new ExceptionResponseObserver<>(responseObserver, exceptionFactory), onReady, context); } }
@Override public ClientStream<RequestT> internalCall( ResponseObserver<ResponseT> responseObserver, ClientStreamReadyObserver<RequestT> onReady, ApiCallContext thisCallContext) { return BidiStreamingCallable.this.internalCall( responseObserver, onReady, defaultCallContext.merge(thisCallContext)); } };
@Override public ClientStream<RequestT> internalCall( ResponseObserver<ResponseT> responseObserver, ClientStreamReadyObserver<RequestT> onReady, ApiCallContext context) { ApiTracer tracer = tracerFactory.newTracer(spanName); context = context.withTracer(tracer); AtomicBoolean wasCancelled = new AtomicBoolean(); ResponseObserver<ResponseT> tracedObserver = new TracedResponseObserver<>(tracer, responseObserver, wasCancelled); ClientStreamReadyObserver<RequestT> tracedReadyObserver = new TracedClientStreamReadyObserver<>(tracer, onReady, wasCancelled); try { ClientStream<RequestT> clientStream = innerCallable.internalCall(tracedObserver, tracedReadyObserver, context); return new TracingClientStream<>(tracer, clientStream, wasCancelled); } catch (RuntimeException e) { tracer.operationFailed(e); throw e; } }