Class TcpTransport

    • Field Detail

      • TRANSPORT_WORKER_THREAD_NAME_PREFIX

        public static final java.lang.String TRANSPORT_WORKER_THREAD_NAME_PREFIX
        See Also:
        Constant Field Values
      • HOST

        public static final Setting<java.util.List<java.lang.String>> HOST
      • BIND_HOST

        public static final Setting<java.util.List<java.lang.String>> BIND_HOST
      • PUBLISH_HOST

        public static final Setting<java.util.List<java.lang.String>> PUBLISH_HOST
      • PORT

        public static final Setting<java.lang.String> PORT
      • PUBLISH_PORT

        public static final Setting<java.lang.Integer> PUBLISH_PORT
      • TCP_NO_DELAY

        public static final Setting<java.lang.Boolean> TCP_NO_DELAY
      • TCP_KEEP_ALIVE

        public static final Setting<java.lang.Boolean> TCP_KEEP_ALIVE
      • TCP_REUSE_ADDRESS

        public static final Setting<java.lang.Boolean> TCP_REUSE_ADDRESS
      • TCP_NO_DELAY_PROFILE

        public static final Setting.AffixSetting<java.lang.Boolean> TCP_NO_DELAY_PROFILE
      • TCP_KEEP_ALIVE_PROFILE

        public static final Setting.AffixSetting<java.lang.Boolean> TCP_KEEP_ALIVE_PROFILE
      • TCP_REUSE_ADDRESS_PROFILE

        public static final Setting.AffixSetting<java.lang.Boolean> TCP_REUSE_ADDRESS_PROFILE
      • BIND_HOST_PROFILE

        public static final Setting.AffixSetting<java.util.List<java.lang.String>> BIND_HOST_PROFILE
      • PUBLISH_HOST_PROFILE

        public static final Setting.AffixSetting<java.util.List<java.lang.String>> PUBLISH_HOST_PROFILE
      • PUBLISH_PORT_PROFILE

        public static final Setting.AffixSetting<java.lang.Integer> PUBLISH_PORT_PROFILE
      • DEFAULT_FEATURES_SETTING

        public static final Setting<Settings> DEFAULT_FEATURES_SETTING
      • settings

        protected final Settings settings
      • threadPool

        protected final ThreadPool threadPool
      • bigArrays

        protected final BigArrays bigArrays
      • compressResponses

        protected final boolean compressResponses
    • Method Detail

      • profileBoundAddresses

        public java.util.Map<java.lang.String,​BoundTransportAddress> profileBoundAddresses()
        Description copied from interface: Transport
        Further profile bound addresses
        Specified by:
        profileBoundAddresses in interface Transport
        Returns:
        null iff profiles are unsupported, otherwise a map with name of profile and its bound transport address
      • getLocalAddresses

        public java.util.List<java.lang.String> getLocalAddresses()
        Description copied from interface: Transport
        Returns a list of all local adresses for this transport
        Specified by:
        getLocalAddresses in interface Transport
      • bindToPort

        protected java.net.InetSocketAddress bindToPort​(java.lang.String name,
                                                        java.net.InetAddress hostAddress,
                                                        java.lang.String port)
      • addressesFromString

        public TransportAddress[] addressesFromString​(java.lang.String address,
                                                      int perAddressLimit)
                                               throws java.net.UnknownHostException
        Description copied from interface: Transport
        Returns an address from its string representation.
        Specified by:
        addressesFromString in interface Transport
        Throws:
        java.net.UnknownHostException
      • onException

        public void onException​(TcpChannel channel,
                                java.lang.Exception e)
      • onServerException

        protected void onServerException​(TcpServerChannel channel,
                                         java.lang.Exception e)
      • onNonChannelException

        protected void onNonChannelException​(java.lang.Exception exception)
        Exception handler for exceptions that are not associated with a specific channel.
        Parameters:
        exception - the exception
      • serverAcceptedChannel

        protected void serverAcceptedChannel​(TcpChannel channel)
      • bind

        protected abstract TcpServerChannel bind​(java.lang.String name,
                                                 java.net.InetSocketAddress address)
                                          throws java.io.IOException
        Binds to the given InetSocketAddress
        Parameters:
        name - the profile name
        address - the address to bind to
        Throws:
        java.io.IOException
      • initiateChannel

        protected abstract TcpChannel initiateChannel​(DiscoveryNode node)
                                               throws java.io.IOException
        Initiate a single tcp socket channel.
        Parameters:
        node - for the initiated connection
        Returns:
        the pending connection
        Throws:
        java.io.IOException - if an I/O exception occurs while opening the channel
      • stopInternal

        protected abstract void stopInternal()
        Called to tear down internal resources
      • sendErrorResponse

        public void sendErrorResponse​(Version nodeVersion,
                                      java.util.Set<java.lang.String> features,
                                      TcpChannel channel,
                                      java.lang.Exception error,
                                      long requestId,
                                      java.lang.String action)
                               throws java.io.IOException
        Sends back an error response to the caller via the given channel
        Parameters:
        nodeVersion - the caller node version
        features - the caller features
        channel - the channel to send the response to
        error - the error to return
        requestId - the request ID this response replies to
        action - the action this response replies to
        Throws:
        java.io.IOException
      • inboundMessage

        public void inboundMessage​(TcpChannel channel,
                                   BytesReference message)
        Handles inbound message that has been decoded.
        Parameters:
        channel - the channel the message if fomr
        message - the message
      • consumeNetworkReads

        public int consumeNetworkReads​(TcpChannel channel,
                                       BytesReference bytesReference)
                                throws java.io.IOException
        Consumes bytes that are available from network reads. This method returns the number of bytes consumed in this call.
        Parameters:
        channel - the channel read from
        bytesReference - the bytes available to consume
        Returns:
        the number of bytes consumed
        Throws:
        java.io.StreamCorruptedException - if the message header format is not recognized
        TcpTransport.HttpOnTransportException - if the message header appears to be an HTTP message
        java.lang.IllegalArgumentException - if the message length is greater that the maximum allowed frame size. This is dependent on the available memory.
        java.io.IOException
      • readMessageLength

        public static int readMessageLength​(BytesReference networkBytes)
                                     throws java.io.IOException
        Validates the first 6 bytes of the message header and returns the length of the message. If 6 bytes are not available, it returns -1.
        Parameters:
        networkBytes - the will be read
        Returns:
        the length of the message
        Throws:
        java.io.StreamCorruptedException - if the message header format is not recognized
        TcpTransport.HttpOnTransportException - if the message header appears to be an HTTP message
        java.lang.IllegalArgumentException - if the message length is greater that the maximum allowed frame size. This is dependent on the available memory.
        java.io.IOException
      • messageReceived

        public final void messageReceived​(BytesReference reference,
                                          TcpChannel channel)
                                   throws java.io.IOException
        This method handles the message receive part for both request and responses
        Throws:
        java.io.IOException
      • handleRequest

        protected java.lang.String handleRequest​(TcpChannel channel,
                                                 java.lang.String profileName,
                                                 StreamInput stream,
                                                 long requestId,
                                                 int messageLengthBytes,
                                                 Version version,
                                                 java.net.InetSocketAddress remoteAddress,
                                                 byte status)
                                          throws java.io.IOException
        Throws:
        java.io.IOException
      • validateRequest

        protected void validateRequest​(StreamInput stream,
                                       long requestId,
                                       java.lang.String action)
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • ensureOpen

        protected final void ensureOpen()
        Ensures this transport is still started / open
        Throws:
        java.lang.IllegalStateException - if the transport is not started / open
      • getProfileSettings

        public static java.util.Set<TcpTransport.ProfileSettings> getProfileSettings​(Settings settings)
        Returns all profile settings for the given settings object
      • getRequestHandler

        public final RequestHandlerRegistry<? extends TransportRequest> getRequestHandler​(java.lang.String action)
        Description copied from interface: Transport
        Returns the registered request handler registry for the given action or null if it's not registered
        Specified by:
        getRequestHandler in interface Transport
        Parameters:
        action - the action to look up