Class BlockingClient

    • Constructor Summary

      Constructors 
      Constructor Description
      BlockingClient​(java.net.SocketAddress serverAddress, StreamConnection connection, int connectTimeoutMillis, javax.net.SocketFactory socketFactory, java.util.Set<BlockingClient> clientSet)
      Creates a new client to the given server address using the given StreamConnection to decode the data.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void closeConnection()
      Closes the connection to the server, triggering the StreamConnection.connectionClosed() event on the network-handling thread where all callbacks occur.
      com.google.common.util.concurrent.ListenableFuture<java.net.SocketAddress> getConnectFuture()
      Returns a future that completes once connection has occurred at the socket level or with an exception if failed to connect.
      static void runReadLoop​(java.io.InputStream stream, StreamConnection connection)
      A blocking call that never returns, except by throwing an exception.
      com.google.common.util.concurrent.ListenableFuture writeBytes​(byte[] message)
      Writes the given bytes to the remote server.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • BlockingClient

        public BlockingClient​(java.net.SocketAddress serverAddress,
                              StreamConnection connection,
                              int connectTimeoutMillis,
                              javax.net.SocketFactory socketFactory,
                              @Nullable
                              java.util.Set<BlockingClient> clientSet)
                       throws java.io.IOException

        Creates a new client to the given server address using the given StreamConnection to decode the data. The given connection MUST be unique to this object. This does not block while waiting for the connection to open, but will call either the StreamConnection.connectionOpened() or StreamConnection.connectionClosed() callback on the created network event processing thread.

        Parameters:
        connectTimeoutMillis - The connect timeout set on the connection (in milliseconds). 0 is interpreted as no timeout.
        socketFactory - An object that creates Socket objects on demand, which may be customised to control how this client connects to the internet. If not sure, use SocketFactory.getDefault()
        clientSet - A set which this object will add itself to after initialization, and then remove itself from
        Throws:
        java.io.IOException
    • Method Detail

      • runReadLoop

        public static void runReadLoop​(java.io.InputStream stream,
                                       StreamConnection connection)
                                throws java.lang.Exception
        A blocking call that never returns, except by throwing an exception. It reads bytes from the input stream and feeds them to the provided StreamConnection, for example, a Peer.
        Throws:
        java.lang.Exception
      • writeBytes

        public com.google.common.util.concurrent.ListenableFuture writeBytes​(byte[] message)
                                                                      throws java.io.IOException
        Description copied from interface: MessageWriteTarget
        Writes the given bytes to the remote server. The returned future will complete when all bytes have been written to the OS network buffer.
        Specified by:
        writeBytes in interface MessageWriteTarget
        Throws:
        java.io.IOException
      • getConnectFuture

        public com.google.common.util.concurrent.ListenableFuture<java.net.SocketAddress> getConnectFuture()
        Returns a future that completes once connection has occurred at the socket level or with an exception if failed to connect.