Interface ManagedClientTransport

All Superinterfaces:
ClientTransport, InternalInstrumented<InternalChannelz.SocketStats>, InternalWithLogId
All Known Subinterfaces:
ConnectionClientTransport

@ThreadSafe public interface ManagedClientTransport extends ClientTransport
A ClientTransport that has life-cycle management.

start(io.grpc.internal.ManagedClientTransport.Listener) must be the first method call to this interface and return before calling other methods.

Typically the transport owns the streams it creates through ClientTransport.newStream(io.grpc.MethodDescriptor<?, ?>, io.grpc.Metadata, io.grpc.CallOptions, io.grpc.ClientStreamTracer[]), while some implementations may transfer the streams to somewhere else. Either way they must conform to the contract defined by shutdown(io.grpc.Status), ManagedClientTransport.Listener.transportShutdown(io.grpc.Status) and ManagedClientTransport.Listener.transportTerminated().

  • Method Details

    • start

      @CheckReturnValue @Nullable Runnable start(ManagedClientTransport.Listener listener)
      Starts transport. This method may only be called once.

      This method and the returned Runnable should not throw any exceptions.

      Parameters:
      listener - non-null listener of transport events
      Returns:
      a Runnable that is executed after-the-fact by the original caller, typically after locks are released
    • shutdown

      void shutdown(Status reason)
      Initiates an orderly shutdown of the transport. Existing streams continue, but the transport will not own any new streams. New streams will either fail (once ManagedClientTransport.Listener.transportShutdown(io.grpc.Status) callback called), or be transferred off this transport (in which case they may succeed). This method may only be called once.
    • shutdownNow

      void shutdownNow(Status reason)
      Initiates a forceful shutdown in which preexisting and new calls are closed. Existing calls should be closed with the provided reason.