Class TcpTransport

    • Method Detail

      • openConnection

        public Releasable openConnection​(DiscoveryNode node,
                                         ConnectionProfile profile,
                                         ActionListener<Transport.Connection> listener)
        Description copied from interface: Transport
        Opens a new connection to the given node. When the connection is fully connected, the listener is called. A Releasable is returned representing the pending connection. If the caller of this method decides to move on before the listener is called with the completed connection, they should release the pending connection to prevent hanging connections.
        Specified by:
        openConnection in interface Transport
      • 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
      • 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
      • sendResponse

        public void sendResponse​(Version nodeVersion,
                                 java.util.Set<java.lang.String> features,
                                 TcpChannel channel,
                                 TransportResponse response,
                                 long requestId,
                                 java.lang.String action,
                                 boolean compress)
                          throws java.io.IOException
        Sends the response to the given channel. This method should be used to send TransportResponse objects back to the caller.
        Throws:
        java.io.IOException
        See Also:
        for sending back errors to the caller
      • inboundMessage

        public void inboundMessage​(TcpChannel channel,
                                   BytesReference message)
        Handles inbound message that has been decoded.
        Parameters:
        channel - the channel the message is from
        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
      • 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