Class InProcessTransport
- All Implemented Interfaces:
ClientTransport, ConnectionClientTransport, ManagedClientTransport, ServerTransport, InternalInstrumented<InternalChannelz.SocketStats>, InternalWithLogId
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate classprivate static classNested classes/interfaces inherited from interface ClientTransport
ClientTransport.PingCallbackNested classes/interfaces inherited from interface ManagedClientTransport
ManagedClientTransport.Listener -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final SocketAddressprivate final longprivate Attributesprivate final Stringprivate final intprivate ManagedClientTransport.Listenerprivate final booleanprivate final InUseStateAggregator<InProcessTransport.InProcessStream> (package private) static booleanprivate static final Loggerprivate final InternalLogIdprivate intprivate ScheduledExecutorServiceprivate ObjectPool<ScheduledExecutorService> private Attributesprivate List<ServerStreamTracer.Factory> private ServerTransportListenerprivate booleanprivate Statusprivate final Set<InProcessTransport.InProcessStream> private booleanprivate Thread.UncaughtExceptionHandlerprivate final String -
Constructor Summary
ConstructorsConstructorDescriptionInProcessTransport(SocketAddress address, int maxInboundMetadataSize, String authority, String userAgent, Attributes eagAttrs, boolean includeCauseWithStatus, long assumedMessageSize) -
Method Summary
Modifier and TypeMethodDescriptionprivate static StatuscleanStatus(Status status, boolean includeCauseWithStatus) Returns a new status with the same code and description.private ClientStreamfailedClientStream(StatsTraceContext statsTraceCtx, Status status) Returns a set of attributes, which may vary depending on the state of the transport.getLogId()Returns an ID that is primarily used in debug logs.Returns an executor for scheduling provided by the transport.com.google.common.util.concurrent.ListenableFuture<InternalChannelz.SocketStats> getStats()Returns the stats object.private static intmetadataSize(Metadata metadata) newStream(MethodDescriptor<?, ?> method, Metadata headers, CallOptions callOptions, ClientStreamTracer[] tracers) Creates a new stream for sending messages to a remote end-point.private voidprivate voidvoidping(ClientTransport.PingCallback callback, Executor executor) Pings a remote endpoint.voidshutdown()Initiates an orderly shutdown of the transport.voidInitiates an orderly shutdown of the transport.voidshutdownNow(Status reason) Initiates a forceful shutdown in which preexisting and new calls are closed.start(ManagedClientTransport.Listener listener) Starts transport.toString()
-
Field Details
-
log
-
isEnabledSupportTracingMessageSizes
static boolean isEnabledSupportTracingMessageSizes -
logId
-
address
-
clientMaxInboundMetadataSize
private final int clientMaxInboundMetadataSize -
authority
-
userAgent
-
serverMaxInboundMetadataSize
private int serverMaxInboundMetadataSize -
includeCauseWithStatus
private final boolean includeCauseWithStatus -
serverSchedulerPool
-
serverScheduler
-
serverTransportListener
-
serverStreamAttributes
-
clientTransportListener
-
assumedMessageSize
private final long assumedMessageSize -
shutdown
private boolean shutdown -
terminated
private boolean terminated -
shutdownStatus
-
streams
-
serverStreamTracerFactories
-
attributes
-
uncaughtExceptionHandler
-
inUseState
-
-
Constructor Details
-
InProcessTransport
public InProcessTransport(SocketAddress address, int maxInboundMetadataSize, String authority, String userAgent, Attributes eagAttrs, boolean includeCauseWithStatus, long assumedMessageSize)
-
-
Method Details
-
start
Description copied from interface:ManagedClientTransportStarts transport. This method may only be called once.This method and the returned
Runnableshould not throw any exceptions.- Specified by:
startin interfaceManagedClientTransport- Parameters:
listener- non-nulllistener of transport events- Returns:
- a
Runnablethat is executed after-the-fact by the original caller, typically after locks are released
-
newStream
public ClientStream newStream(MethodDescriptor<?, ?> method, Metadata headers, CallOptions callOptions, ClientStreamTracer[] tracers) Description copied from interface:ClientTransportCreates a new stream for sending messages to a remote end-point.This method returns immediately and does not wait for any validation of the request. If creation fails for any reason,
ClientStreamListener.closed(Status, ClientStreamListener.RpcProgress, Metadata)will be called to provide the error information. Any sent messages for this stream will be buffered until creation has completed (either successfully or unsuccessfully).This method is called under the
Contextof theClientCall.- Specified by:
newStreamin interfaceClientTransport- Parameters:
method- the descriptor of the remote method to be called for this stream.headers- to send at the beginning of the callcallOptions- runtime options of the calltracers- a non-empty array of tracers. The last element in it is reserved to be set by the load balancer's pick result and otherwise is a no-op tracer.- Returns:
- the newly created stream.
-
failedClientStream
-
ping
Description copied from interface:ClientTransportPings a remote endpoint. When an acknowledgement is received, the given callback will be invoked using the given executor.Pings are not necessarily sent to the same endpoint, thus a successful ping only means at least one endpoint responded, but doesn't imply the availability of other endpoints (if there is any).
This is an optional method. Transports that do not have any mechanism by which to ping the remote endpoint may throw
UnsupportedOperationException.- Specified by:
pingin interfaceClientTransport
-
shutdown
Description copied from interface:ManagedClientTransportInitiates an orderly shutdown of the transport. Existing streams continue, but the transport will not own any new streams. New streams will either fail (onceManagedClientTransport.Listener.transportShutdown(Status)callback called), or be transferred off this transport (in which case they may succeed). This method may only be called once.- Specified by:
shutdownin interfaceManagedClientTransport
-
shutdown
public void shutdown()Description copied from interface:ServerTransportInitiates an orderly shutdown of the transport. Existing streams continue, but new streams will eventually begin failing. New streams "eventually" begin failing because shutdown may need to be processed on a separate thread. May only be called once.- Specified by:
shutdownin interfaceServerTransport
-
shutdownNow
Description copied from interface:ServerTransportInitiates a forceful shutdown in which preexisting and new calls are closed. Existing calls should be closed with the providedreason.- Specified by:
shutdownNowin interfaceManagedClientTransport- Specified by:
shutdownNowin interfaceServerTransport
-
toString
-
getLogId
Description copied from interface:InternalWithLogIdReturns an ID that is primarily used in debug logs. It usually contains the class name and a numeric ID that is unique among the instances.The subclasses of this interface usually want to include the log ID in their
Object.toString()results.- Specified by:
getLogIdin interfaceInternalWithLogId
-
getAttributes
Description copied from interface:ConnectionClientTransportReturns a set of attributes, which may vary depending on the state of the transport. The keys should define in what states they will be present.- Specified by:
getAttributesin interfaceConnectionClientTransport
-
getScheduledExecutorService
Description copied from interface:ServerTransportReturns an executor for scheduling provided by the transport. The service should be configured to allow cancelled scheduled runnables to be GCed.The executor may not be used after the transport terminates. The caller should ensure any outstanding tasks are cancelled when the transport terminates.
- Specified by:
getScheduledExecutorServicein interfaceServerTransport
-
getStats
Description copied from interface:InternalInstrumentedReturns the stats object.- Specified by:
getStatsin interfaceInternalInstrumented<InternalChannelz.SocketStats>
-
notifyShutdown
-
notifyTerminated
private void notifyTerminated() -
metadataSize
-
cleanStatus
Returns a new status with the same code and description. If includeCauseWithStatus is true, cause is also included.For InProcess transport to behave in the same way as the other transports, when exchanging statuses between client and server and vice versa, the cause should be excluded from the status. For easier debugging, the status may be optionally included.
-