Class ServerStreamingCallable<RequestT,​ResponseT>

  • Direct Known Subclasses:
    TracedServerStreamingCallable

    public abstract class ServerStreamingCallable<RequestT,​ResponseT>
    extends Object
    A ServerStreamingCallable is an immutable object which is capable of making RPC calls to server streaming API methods. Not all transports support streaming.

    It is considered advanced usage for a user to create a ServerStreamingCallable themselves. This class is intended to be created by a generated client class, and configured by instances of StreamingCallSettings.Builder which are exposed through the client settings class.

    • Constructor Detail

      • ServerStreamingCallable

        protected ServerStreamingCallable()
    • Method Detail

      • first

        public UnaryCallable<RequestT,​ResponseT> first()
        Construct a UnaryCallable that will yield the first item in the stream and cancel it. If the stream is empty, the item will be null.

        Example usage:

        
         StreamingCallable<String> streamingCallable = // ..
         String theResult = streamingCallable.first().call(request);
         ApiFuture<String> theResult = streamingCallable.first().futureCall(request);
         
        Returns:
        The UnaryCallable.
      • all

        public UnaryCallable<RequestT,​List<ResponseT>> all()
        Construct a UnaryCallable that will buffer the entire stream into memory before completing. If the stream is empty, then the list will be empty.

        Example usage:

        
         StreamingCallable<String> streamingCallable = // ..
         List<String> theResult = streamingCallable.all().call(request);
         ApiFuture<List<String>> theResult = streamingCallable.all().futureCall(request);
         
        Returns:
        The UnaryCallable.
      • call

        public ServerStream<ResponseT> call​(RequestT request)
        Conduct a iteration server streaming call.

        This returns a live stream that must either be fully consumed or cancelled. Example usage:

        
         StreamingCallable<String> streamingCallable = // ..
         ServerStream stream = streamingCallable.call(request)
         for (String s : stream) {
           if ("needle".equals(s)) {
             // Cancelling the stream will cause `hasNext()` to return false on the next iteration,
             // naturally breaking the loop.
             stream.cancel();
           }
         }
         List<String> theResult = streamingCallable.all().call(request);
         ApiFuture<List<String>> theResult = streamingCallable.all().futureCall(request);
         
        Parameters:
        request - request
        Returns:
        ServerStream which is used for iterating the responses.
      • call

        public ServerStream<ResponseT> call​(RequestT request,
                                            ApiCallContext context)
        Conduct a server streaming call with the given ApiCallContext.

        This returns a live stream that must either be fully consumed or cancelled.

        Parameters:
        request - request
        context - the context
        Returns:
        ServerStream which is used for iterating the responses.
      • blockingServerStreamingCall

        @Deprecated
        public Iterator<ResponseT> blockingServerStreamingCall​(RequestT request,
                                                               ApiCallContext context)
        Deprecated.
        Please use call() instead.
        Conduct an iteration server streaming call
        Parameters:
        request - request
        context - context
        Returns:
        Iterator which is used for iterating the responses.
      • blockingServerStreamingCall

        @Deprecated
        public Iterator<ResponseT> blockingServerStreamingCall​(RequestT request)
        Deprecated.
        Please use call() instead.
        Conduct a iteration server streaming call
        Parameters:
        request - request
        Returns:
        Iterator which is used for iterating the responses.