private void sendResponses() { responseObserver.onNext(response); responseObserver.onCompleted(); }
@Override public void onError(Throwable throwable) { responseObserver.onError(throwable); }
@Override public void onNext(QueryDocumentSnapshot documentSnapshot) { responseObserver.onNext(documentSnapshot); }
@Override public void onCompleted() { responseObserver.onCompleted(); } },
requestObserver.onNext(request); int bytes; while ((bytes = audioStream.read(buffer)) != -1) { requestObserver.onNext( StreamingDetectIntentRequest.newBuilder() .setInputAudio(ByteString.copyFrom(buffer, 0, bytes)) requestObserver.onError(e); requestObserver.onCompleted();
private void send(ListenResponse response) throws InterruptedException { streamObserverCapture.getValue().onNext(response); }
/** Closes the stream and calls onError() if the stream is still active. */ private void closeStream(final Throwable throwable) { if (stream != null) { stream.onCompleted(); stream = null; } if (isActive.getAndSet(false)) { userCallbackExecutor.execute( new Runnable() { @Override public void run() { listener.onEvent( null, throwable instanceof FirestoreException ? (FirestoreException) throwable : FirestoreException.apiException( new ApiException( throwable, GrpcStatusCode.of(getStatus(throwable).getCode()), false))); } }); } }
public T answer(InvocationOnMock invocation) { Object[] args = invocation.getArguments(); ApiStreamObserver<T> observer = (ApiStreamObserver<T>) args[1]; for (T resp : response) { observer.onNext(resp); } observer.onCompleted(); return null; } };
@Override public void run() { if (!isActive.get()) { return; } synchronized (Watch.this) { if (!isActive.get()) { return; } Preconditions.checkState(stream == null); current = false; nextAttempt = backoff.createNextAttempt(nextAttempt); stream = firestore.streamRequest(Watch.this, firestore.getClient().listenCallable()); ListenRequest.Builder request = ListenRequest.newBuilder(); request.setDatabase(firestore.getDatabaseName()); request.setAddTarget(target); if (resumeToken != null) { request.getAddTargetBuilder().setResumeToken(resumeToken); } stream.onNext(request.build()); } } },
/** Helper to restart the outgoing stream to the backend. */ private void resetStream() { if (stream != null) { stream.onCompleted(); stream = null; } initStream(); }
private void destroy(Code code) throws InterruptedException { streamObserverCapture.getValue().onError(new StatusException(io.grpc.Status.fromCode(code))); }
@Test @SuppressWarnings("all") public void streamingRecognizeTest() throws Exception { StreamingRecognizeResponse expectedResponse = StreamingRecognizeResponse.newBuilder().build(); mockSpeech.addResponse(expectedResponse); StreamingRecognizeRequest request = StreamingRecognizeRequest.newBuilder().build(); MockStreamObserver<StreamingRecognizeResponse> responseObserver = new MockStreamObserver<>(); BidiStreamingCallable<StreamingRecognizeRequest, StreamingRecognizeResponse> callable = client.streamingRecognizeCallable(); ApiStreamObserver<StreamingRecognizeRequest> requestObserver = callable.bidiStreamingCall(responseObserver); requestObserver.onNext(request); requestObserver.onCompleted(); List<StreamingRecognizeResponse> actualResponses = responseObserver.future().get(); Assert.assertEquals(1, actualResponses.size()); Assert.assertEquals(expectedResponse, actualResponses.get(0)); }
streamObserverCapture.getValue().onNext(response);
private void close() throws InterruptedException { streamObserverCapture.getValue().onCompleted(); }
@Override public void onError(Throwable throwable) { responseObserver.onError(throwable); }
@Test @SuppressWarnings("all") public void streamingRecognizeTest() throws Exception { StreamingRecognizeResponse expectedResponse = StreamingRecognizeResponse.newBuilder().build(); mockSpeech.addResponse(expectedResponse); StreamingRecognizeRequest request = StreamingRecognizeRequest.newBuilder().build(); MockStreamObserver<StreamingRecognizeResponse> responseObserver = new MockStreamObserver<>(); BidiStreamingCallable<StreamingRecognizeRequest, StreamingRecognizeResponse> callable = client.streamingRecognizeCallable(); ApiStreamObserver<StreamingRecognizeRequest> requestObserver = callable.bidiStreamingCall(responseObserver); requestObserver.onNext(request); requestObserver.onCompleted(); List<StreamingRecognizeResponse> actualResponses = responseObserver.future().get(); Assert.assertEquals(1, actualResponses.size()); Assert.assertEquals(expectedResponse, actualResponses.get(0)); }
@Test @SuppressWarnings("all") public void streamingRecognizeExceptionTest() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(Status.INVALID_ARGUMENT); mockSpeech.addException(exception); StreamingRecognizeRequest request = StreamingRecognizeRequest.newBuilder().build(); MockStreamObserver<StreamingRecognizeResponse> responseObserver = new MockStreamObserver<>(); BidiStreamingCallable<StreamingRecognizeRequest, StreamingRecognizeResponse> callable = client.streamingRecognizeCallable(); ApiStreamObserver<StreamingRecognizeRequest> requestObserver = callable.bidiStreamingCall(responseObserver); requestObserver.onNext(request); try { List<StreamingRecognizeResponse> actualResponses = responseObserver.future().get(); Assert.fail("No exception thrown"); } catch (ExecutionException e) { Assert.assertTrue(e.getCause() instanceof InvalidArgumentException); InvalidArgumentException apiException = (InvalidArgumentException) e.getCause(); Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); } } }
@Override public void onCompleted() { delegate.onCompleted(); } }
@Override public void onError(Throwable throwable) { delegate.onError(throwable); }
@Test public void streamingRecognize() throws Exception { byte[] audioBytes = Resources.toByteArray(new URL("https://storage.googleapis.com/gapic-toolkit/hello.flac")); StreamingRecognitionConfig streamingConfig = StreamingRecognitionConfig.newBuilder().setConfig(config()).build(); ResponseApiStreamingObserver<StreamingRecognizeResponse> responseObserver = new ResponseApiStreamingObserver<>(); ApiStreamObserver<StreamingRecognizeRequest> requestObserver = speechClient.streamingRecognizeCallable().bidiStreamingCall(responseObserver); // The first request must **only** contain the audio configuration: requestObserver.onNext( StreamingRecognizeRequest.newBuilder().setStreamingConfig(streamingConfig).build()); // Subsequent requests must **only** contain the audio data. requestObserver.onNext( StreamingRecognizeRequest.newBuilder() .setAudioContent(ByteString.copyFrom(audioBytes)) .build()); // Mark transmission as completed after sending the data. requestObserver.onCompleted(); List<StreamingRecognizeResponse> responses = responseObserver.future().get(); Truth.assertThat(responses.size()).isGreaterThan(0); Truth.assertThat(responses.get(0).getResultsCount()).isGreaterThan(0); Truth.assertThat(responses.get(0).getResults(0).getAlternativesCount()).isGreaterThan(0); String text = responses.get(0).getResults(0).getAlternatives(0).getTranscript(); Truth.assertThat(text).isEqualTo("hello"); }