Class ForwardingServerBuilder<T extends ServerBuilder<T>>
- Type Parameters:
T- The type of the subclass extending this abstract class.
ServerBuilder that delegates all its builder methods to another builder by default.- Since:
- 1.34.0
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionaddService(BindableService bindableService) Adds a service implementation to the handler registry.addService(ServerServiceDefinition service) Adds a service implementation to the handler registry.Adds aServerStreamTracer.Factoryto measure server-side traffic.Adds aServerTransportFilter.build()Returns theServerbuilt by the delegate by default.callExecutor(ServerCallExecutorSupplier executorSupplier) Allows for defining a way to provide a custom executor to handle the server call.compressorRegistry(CompressorRegistry registry) Set the compression registry for use in the channel.decompressorRegistry(DecompressorRegistry registry) Set the decompression registry for use in the channel.protected abstract ServerBuilder<?>delegate()Returns the delegatedServerBuilder.Execute application code directly in the transport thread.Provides a custom executor.fallbackHandlerRegistry(HandlerRegistry fallbackRegistry) Sets a fallback handler registry that will be looked up in if a method is not found in the primary registry.static ServerBuilder<?>forPort(int port) This method serves to force sub classes to "hide" this static factory.handshakeTimeout(long timeout, TimeUnit unit) Sets the permitted time for new connections to complete negotiation handshakes before being killed.intercept(ServerInterceptor interceptor) Adds aServerInterceptorthat is run for all services on the server.keepAliveTime(long keepAliveTime, TimeUnit timeUnit) Sets the time without read activity before sending a keepalive ping.keepAliveTimeout(long keepAliveTimeout, TimeUnit timeUnit) Sets a time waiting for read activity after sending a keepalive ping.maxConnectionAge(long maxConnectionAge, TimeUnit timeUnit) Sets the maximum connection age, connections lasting longer than which will be gracefully terminated.maxConnectionAgeGrace(long maxConnectionAgeGrace, TimeUnit timeUnit) Sets the grace time for the graceful connection termination.maxConnectionIdle(long maxConnectionIdle, TimeUnit timeUnit) Sets the maximum connection idle time, connections being idle for longer than which will be gracefully terminated.maxInboundMessageSize(int bytes) Sets the maximum message size allowed to be received on the server.maxInboundMetadataSize(int bytes) Sets the maximum size of metadata allowed to be received.permitKeepAliveTime(long keepAliveTime, TimeUnit timeUnit) Specify the most aggressive keep-alive time clients are permitted to configure.permitKeepAliveWithoutCalls(boolean permit) Sets whether to allow clients to send keep-alive HTTP/2 PINGs even if there are no outstanding RPCs on the connection.setBinaryLog(BinaryLog binaryLog) Sets the BinaryLog object that this server should log to.toString()useTransportSecurity(File certChain, File privateKey) Makes the server use TLS.useTransportSecurity(InputStream certChain, InputStream privateKey) Makes the server use TLS.Methods inherited from class io.grpc.ServerBuilder
addServices
-
Constructor Details
-
ForwardingServerBuilder
protected ForwardingServerBuilder()The default constructor.
-
-
Method Details
-
forPort
This method serves to force sub classes to "hide" this static factory. -
delegate
Returns the delegatedServerBuilder. -
directExecutor
Description copied from class:ServerBuilderExecute application code directly in the transport thread.Depending on the underlying transport, using a direct executor may lead to substantial performance improvements. However, it also requires the application to not block under any circumstances.
Calling this method is semantically equivalent to calling
ServerBuilder.executor(Executor)and passing in a direct executor. However, this is the preferred way as it may allow the transport to perform special optimizations.- Specified by:
directExecutorin classServerBuilder<T extends ServerBuilder<T>>- Returns:
- this
-
executor
Description copied from class:ServerBuilderProvides a custom executor.It's an optional parameter. If the user has not provided an executor when the server is built, the builder will use a static cached thread pool.
The server won't take ownership of the given executor. It's caller's responsibility to shut down the executor when it's desired.
- Specified by:
executorin classServerBuilder<T extends ServerBuilder<T>>- Returns:
- this
-
callExecutor
Description copied from class:ServerBuilderAllows for defining a way to provide a custom executor to handle the server call. This executor is the result of callingServerCallExecutorSupplier.getExecutor(ServerCall, Metadata)per RPC.It's an optional parameter. If it is provided, the
ServerBuilder.executor(Executor)would still run necessary tasks before theServerCallExecutorSupplieris ready to be called, then it switches over. But if callingServerCallExecutorSupplierreturns null, the server call is still handled by the defaultServerBuilder.executor(Executor)as a fallback.- Overrides:
callExecutorin classServerBuilder<T extends ServerBuilder<T>>- Parameters:
executorSupplier- the server call executor provider- Returns:
- this
-
addService
Description copied from class:ServerBuilderAdds a service implementation to the handler registry.- Specified by:
addServicein classServerBuilder<T extends ServerBuilder<T>>- Parameters:
service- ServerServiceDefinition object- Returns:
- this
-
addService
Description copied from class:ServerBuilderAdds a service implementation to the handler registry.- Specified by:
addServicein classServerBuilder<T extends ServerBuilder<T>>- Parameters:
bindableService- BindableService object- Returns:
- this
-
intercept
Description copied from class:ServerBuilderAdds aServerInterceptorthat is run for all services on the server. Interceptors added through this method always run before per-service interceptors added throughServerInterceptors. Interceptors run in the reverse order in which they are added, just as with consecutive calls toServerInterceptors.intercept().- Overrides:
interceptin classServerBuilder<T extends ServerBuilder<T>>- Parameters:
interceptor- the all-service interceptor- Returns:
- this
-
addTransportFilter
Description copied from class:ServerBuilderAdds aServerTransportFilter. The order of filters being added is the order they will be executed.- Overrides:
addTransportFilterin classServerBuilder<T extends ServerBuilder<T>>- Returns:
- this
-
addStreamTracerFactory
Description copied from class:ServerBuilderAdds aServerStreamTracer.Factoryto measure server-side traffic. The order of factories being added is the order they will be executed.- Overrides:
addStreamTracerFactoryin classServerBuilder<T extends ServerBuilder<T>>- Returns:
- this
-
fallbackHandlerRegistry
Description copied from class:ServerBuilderSets a fallback handler registry that will be looked up in if a method is not found in the primary registry. The primary registry (configured viaaddService()) is faster but immutable. The fallback registry is more flexible and allows implementations to mutate over time and load services on-demand.- Specified by:
fallbackHandlerRegistryin classServerBuilder<T extends ServerBuilder<T>>- Returns:
- this
-
useTransportSecurity
Description copied from class:ServerBuilderMakes the server use TLS.- Specified by:
useTransportSecurityin classServerBuilder<T extends ServerBuilder<T>>- Parameters:
certChain- file containing the full certificate chainprivateKey- file containing the private key- Returns:
- this
-
useTransportSecurity
Description copied from class:ServerBuilderMakes the server use TLS.- Overrides:
useTransportSecurityin classServerBuilder<T extends ServerBuilder<T>>- Parameters:
certChain- InputStream containing the full certificate chainprivateKey- InputStream containing the private key- Returns:
- this
-
decompressorRegistry
Description copied from class:ServerBuilderSet the decompression registry for use in the channel. This is an advanced API call and shouldn't be used unless you are using custom message encoding. The default supported decompressors are inDecompressorRegistry.getDefaultInstance.- Specified by:
decompressorRegistryin classServerBuilder<T extends ServerBuilder<T>>- Returns:
- this
-
compressorRegistry
Description copied from class:ServerBuilderSet the compression registry for use in the channel. This is an advanced API call and shouldn't be used unless you are using custom message encoding. The default supported compressors are inCompressorRegistry.getDefaultInstance.- Specified by:
compressorRegistryin classServerBuilder<T extends ServerBuilder<T>>- Returns:
- this
-
handshakeTimeout
Description copied from class:ServerBuilderSets the permitted time for new connections to complete negotiation handshakes before being killed. The default value is 2 minutes.- Overrides:
handshakeTimeoutin classServerBuilder<T extends ServerBuilder<T>>- Returns:
- this
-
keepAliveTime
Description copied from class:ServerBuilderSets the time without read activity before sending a keepalive ping. An unreasonably small value might be increased, andLong.MAX_VALUEnano seconds or an unreasonably large value will disable keepalive. The typical default is two hours when supported.- Overrides:
keepAliveTimein classServerBuilder<T extends ServerBuilder<T>>- See Also:
-
keepAliveTimeout
Description copied from class:ServerBuilderSets a time waiting for read activity after sending a keepalive ping. If the time expires without any read activity on the connection, the connection is considered dead. An unreasonably small value might be increased. Defaults to 20 seconds when supported.This value should be at least multiple times the RTT to allow for lost packets.
- Overrides:
keepAliveTimeoutin classServerBuilder<T extends ServerBuilder<T>>- See Also:
-
maxConnectionIdle
Description copied from class:ServerBuilderSets the maximum connection idle time, connections being idle for longer than which will be gracefully terminated. Idleness duration is defined since the most recent time the number of outstanding RPCs became zero or the connection establishment. An unreasonably small value might be increased.Long.MAX_VALUEnano seconds or an unreasonably large value will disable max connection idle.- Overrides:
maxConnectionIdlein classServerBuilder<T extends ServerBuilder<T>>- See Also:
-
maxConnectionAge
Description copied from class:ServerBuilderSets the maximum connection age, connections lasting longer than which will be gracefully terminated. An unreasonably small value might be increased. A random jitter of +/-10% will be added to it.Long.MAX_VALUEnano seconds or an unreasonably large value will disable max connection age.- Overrides:
maxConnectionAgein classServerBuilder<T extends ServerBuilder<T>>- See Also:
-
maxConnectionAgeGrace
Description copied from class:ServerBuilderSets the grace time for the graceful connection termination. Once the max connection age is reached, RPCs have the grace time to complete. RPCs that do not complete in time will be cancelled, allowing the connection to terminate.Long.MAX_VALUEnano seconds or an unreasonably large value are considered infinite.- Overrides:
maxConnectionAgeGracein classServerBuilder<T extends ServerBuilder<T>>- See Also:
-
permitKeepAliveTime
Description copied from class:ServerBuilderSpecify the most aggressive keep-alive time clients are permitted to configure. The server will try to detect clients exceeding this rate and when detected will forcefully close the connection. The typical default is 5 minutes when supported.Even though a default is defined that allows some keep-alives, clients must not use keep-alive without approval from the service owner. Otherwise, they may experience failures in the future if the service becomes more restrictive. When unthrottled, keep-alives can cause a significant amount of traffic and CPU usage, so clients and servers should be conservative in what they use and accept.
- Overrides:
permitKeepAliveTimein classServerBuilder<T extends ServerBuilder<T>>- See Also:
-
permitKeepAliveWithoutCalls
Description copied from class:ServerBuilderSets whether to allow clients to send keep-alive HTTP/2 PINGs even if there are no outstanding RPCs on the connection. Defaults tofalsewhen supported.- Overrides:
permitKeepAliveWithoutCallsin classServerBuilder<T extends ServerBuilder<T>>- See Also:
-
maxInboundMessageSize
Description copied from class:ServerBuilderSets the maximum message size allowed to be received on the server. If not called, defaults to 4 MiB. The default provides protection to servers who haven't considered the possibility of receiving large messages while trying to be large enough to not be hit in normal usage.This method is advisory, and implementations may decide to not enforce this. Currently, the only known transport to not enforce this is
InProcessServer.- Overrides:
maxInboundMessageSizein classServerBuilder<T extends ServerBuilder<T>>- Parameters:
bytes- the maximum number of bytes a single message can be.- Returns:
- this
-
maxInboundMetadataSize
Description copied from class:ServerBuilderSets the maximum size of metadata allowed to be received.Integer.MAX_VALUEdisables the enforcement. The default is implementation-dependent, but is not generally less than 8 KiB and may be unlimited.This is cumulative size of the metadata. The precise calculation is implementation-dependent, but implementations are encouraged to follow the calculation used for HTTP/2's SETTINGS_MAX_HEADER_LIST_SIZE. It sums the bytes from each entry's key and value, plus 32 bytes of overhead per entry.
- Overrides:
maxInboundMetadataSizein classServerBuilder<T extends ServerBuilder<T>>- Parameters:
bytes- the maximum size of received metadata- Returns:
- this
-
setBinaryLog
Description copied from class:ServerBuilderSets the BinaryLog object that this server should log to. The server does not take ownership of the object, and users are responsible for callingCloseable.close().- Overrides:
setBinaryLogin classServerBuilder<T extends ServerBuilder<T>>- Parameters:
binaryLog- the object to provide logging.- Returns:
- this
-
build
Returns theServerbuilt by the delegate by default. Overriding method can return different value.- Specified by:
buildin classServerBuilder<T extends ServerBuilder<T>>- Returns:
- a new Server
-
toString
-