/** * Checks send after stream is ready. */ @Test public void sendAfterStreamReady() throws Exception { when(mRequestObserver.isReady()).thenReturn(false); doAnswer((args) -> { mOnReadyHandler = args.getArgumentAt(0, Runnable.class); return null; }).when(mRequestObserver).setOnReadyHandler(any(Runnable.class)); mResponseObserver.beforeStart(mRequestObserver); EXECUTOR.submit(() -> { try { // notify ready after a short period of time Thread.sleep(SHORT_TIMEOUT); when(mRequestObserver.isReady()).thenReturn(true); mOnReadyHandler.run(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } }); WriteRequest request = WriteRequest.newBuilder().build(); mStream.send(request, TIMEOUT); verify(mRequestObserver).onNext(request); }
StreamObserverToCallListenerAdapter( StreamObserver<RespT> observer, CallToStreamObserverAdapter<ReqT> adapter, boolean streamingResponse) { this.observer = observer; this.streamingResponse = streamingResponse; this.adapter = adapter; if (observer instanceof ClientResponseObserver) { @SuppressWarnings("unchecked") ClientResponseObserver<ReqT, RespT> clientResponseObserver = (ClientResponseObserver<ReqT, RespT>) observer; clientResponseObserver.beforeStart(adapter); } adapter.freeze(); }
StreamObserverToCallListenerAdapter(StreamObserver<Response> observer, CallToStreamObserverAdapter<Request, Response> adapter, boolean streamingResponse) { this.observer = observer; this.streamingResponse = streamingResponse; this.adapter = adapter; if (observer instanceof ClientResponseObserver) { @SuppressWarnings("unchecked") ClientResponseObserver<Request, Response> clientResponseObserver = (ClientResponseObserver<Request, Response>) observer; clientResponseObserver.beforeStart(adapter); } adapter.freeze(); }
@SuppressWarnings("unchecked") @Override public void run() { try { // restart the clock. super.run(); // pre-fetch one more result, for performance reasons. callWrapper.request(1); if (rowObserver instanceof ClientResponseObserver) { ((ClientResponseObserver<ReadRowsRequest, FlatRow>) rowObserver).beforeStart(callWrapper); } } catch (Exception e) { setException(e); } }