Package io.grpc

Class ForwardingServerBuilder<T extends ServerBuilder<T>>

    • Constructor Detail

      • ForwardingServerBuilder

        protected ForwardingServerBuilder()
        The default constructor.
    • Method Detail

      • forPort

        public static ServerBuilder<?> forPort​(int port)
        This method serves to force sub classes to "hide" this static factory.
      • delegate

        protected abstract ServerBuilder<?> delegate()
        Returns the delegated ServerBuilder.
      • directExecutor

        public T directExecutor()
        Description copied from class: ServerBuilder
        Execute 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:
        directExecutor in class ServerBuilder<T extends ServerBuilder<T>>
        Returns:
        this
      • executor

        public T executor​(@Nullable
                          java.util.concurrent.Executor executor)
        Description copied from class: ServerBuilder
        Provides 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:
        executor in class ServerBuilder<T extends ServerBuilder<T>>
        Returns:
        this
      • intercept

        public T intercept​(ServerInterceptor interceptor)
        Description copied from class: ServerBuilder
        Adds a ServerInterceptor that is run for all services on the server. Interceptors added through this method always run before per-service interceptors added through ServerInterceptors. Interceptors run in the reverse order in which they are added, just as with consecutive calls to ServerInterceptors.intercept().
        Overrides:
        intercept in class ServerBuilder<T extends ServerBuilder<T>>
        Parameters:
        interceptor - the all-service interceptor
        Returns:
        this
      • fallbackHandlerRegistry

        public T fallbackHandlerRegistry​(@Nullable
                                         HandlerRegistry fallbackRegistry)
        Description copied from class: ServerBuilder
        Sets a fallback handler registry that will be looked up in if a method is not found in the primary registry. The primary registry (configured via addService()) is faster but immutable. The fallback registry is more flexible and allows implementations to mutate over time and load services on-demand.
        Specified by:
        fallbackHandlerRegistry in class ServerBuilder<T extends ServerBuilder<T>>
        Returns:
        this
      • useTransportSecurity

        public T useTransportSecurity​(java.io.File certChain,
                                      java.io.File privateKey)
        Description copied from class: ServerBuilder
        Makes the server use TLS.
        Specified by:
        useTransportSecurity in class ServerBuilder<T extends ServerBuilder<T>>
        Parameters:
        certChain - file containing the full certificate chain
        privateKey - file containing the private key
        Returns:
        this
      • useTransportSecurity

        public T useTransportSecurity​(java.io.InputStream certChain,
                                      java.io.InputStream privateKey)
        Description copied from class: ServerBuilder
        Makes the server use TLS.
        Overrides:
        useTransportSecurity in class ServerBuilder<T extends ServerBuilder<T>>
        Parameters:
        certChain - InputStream containing the full certificate chain
        privateKey - InputStream containing the private key
        Returns:
        this
      • decompressorRegistry

        public T decompressorRegistry​(@Nullable
                                      DecompressorRegistry registry)
        Description copied from class: ServerBuilder
        Set 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 in DecompressorRegistry.getDefaultInstance.
        Specified by:
        decompressorRegistry in class ServerBuilder<T extends ServerBuilder<T>>
        Returns:
        this
      • compressorRegistry

        public T compressorRegistry​(@Nullable
                                    CompressorRegistry registry)
        Description copied from class: ServerBuilder
        Set 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 in CompressorRegistry.getDefaultInstance.
        Specified by:
        compressorRegistry in class ServerBuilder<T extends ServerBuilder<T>>
        Returns:
        this
      • handshakeTimeout

        public T handshakeTimeout​(long timeout,
                                  java.util.concurrent.TimeUnit unit)
        Description copied from class: ServerBuilder
        Sets the permitted time for new connections to complete negotiation handshakes before being killed. The default value is 2 minutes.
        Overrides:
        handshakeTimeout in class ServerBuilder<T extends ServerBuilder<T>>
        Returns:
        this
      • keepAliveTime

        public T keepAliveTime​(long keepAliveTime,
                               java.util.concurrent.TimeUnit timeUnit)
        Description copied from class: ServerBuilder
        Sets the time without read activity before sending a keepalive ping. An unreasonably small value might be increased, and Long.MAX_VALUE nano seconds or an unreasonably large value will disable keepalive. The typical default is two hours when supported.
        Overrides:
        keepAliveTime in class ServerBuilder<T extends ServerBuilder<T>>
        See Also:
        gRFC A9 Server-side Connection Management
      • keepAliveTimeout

        public T keepAliveTimeout​(long keepAliveTimeout,
                                  java.util.concurrent.TimeUnit timeUnit)
        Description copied from class: ServerBuilder
        Sets 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:
        keepAliveTimeout in class ServerBuilder<T extends ServerBuilder<T>>
        See Also:
        gRFC A9 Server-side Connection Management
      • maxConnectionIdle

        public T maxConnectionIdle​(long maxConnectionIdle,
                                   java.util.concurrent.TimeUnit timeUnit)
        Description copied from class: ServerBuilder
        Sets 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_VALUE nano seconds or an unreasonably large value will disable max connection idle.
        Overrides:
        maxConnectionIdle in class ServerBuilder<T extends ServerBuilder<T>>
        See Also:
        gRFC A9 Server-side Connection Management
      • maxConnectionAge

        public T maxConnectionAge​(long maxConnectionAge,
                                  java.util.concurrent.TimeUnit timeUnit)
        Description copied from class: ServerBuilder
        Sets 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_VALUE nano seconds or an unreasonably large value will disable max connection age.
        Overrides:
        maxConnectionAge in class ServerBuilder<T extends ServerBuilder<T>>
        See Also:
        gRFC A9 Server-side Connection Management
      • permitKeepAliveTime

        public T permitKeepAliveTime​(long keepAliveTime,
                                     java.util.concurrent.TimeUnit timeUnit)
        Description copied from class: ServerBuilder
        Specify 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:
        permitKeepAliveTime in class ServerBuilder<T extends ServerBuilder<T>>
        See Also:
        ServerBuilder.permitKeepAliveWithoutCalls(boolean), gRFC A8 Client-side Keepalive
      • maxInboundMessageSize

        public T maxInboundMessageSize​(int bytes)
        Description copied from class: ServerBuilder
        Sets 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:
        maxInboundMessageSize in class ServerBuilder<T extends ServerBuilder<T>>
        Parameters:
        bytes - the maximum number of bytes a single message can be.
        Returns:
        this
      • maxInboundMetadataSize

        public T maxInboundMetadataSize​(int bytes)
        Description copied from class: ServerBuilder
        Sets the maximum size of metadata allowed to be received. Integer.MAX_VALUE disables 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:
        maxInboundMetadataSize in class ServerBuilder<T extends ServerBuilder<T>>
        Parameters:
        bytes - the maximum size of received metadata
        Returns:
        this
      • setBinaryLog

        public T setBinaryLog​(BinaryLog binaryLog)
        Description copied from class: ServerBuilder
        Sets the BinaryLog object that this server should log to. The server does not take ownership of the object, and users are responsible for calling Closeable.close().
        Overrides:
        setBinaryLog in class ServerBuilder<T extends ServerBuilder<T>>
        Parameters:
        binaryLog - the object to provide logging.
        Returns:
        this
      • build

        public Server build()
        Returns the Server built by the delegate by default. Overriding method can return different value.
        Specified by:
        build in class ServerBuilder<T extends ServerBuilder<T>>
        Returns:
        a new Server
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object