Package convex.peer

Class ConnectionManager

java.lang.Object
convex.peer.ConnectionManager

public class ConnectionManager extends Object
Class for managing the outbound connections from a Peer Server. Outbound connections need special handling: - Should be trusted connections to known peers - Should be targets for broadcast of belief updates - Should be limited in number
  • Field Details

    • server

      protected final Server server
  • Constructor Details

    • ConnectionManager

      public ConnectionManager(Server server)
  • Method Details

    • maintainConnections

      protected void maintainConnections()
    • setConnection

      public void setConnection(AccountKey peerKey, Connection peerConnection)
    • closeConnection

      public void closeConnection(AccountKey peerKey)
      Close and remove a connection
      Parameters:
      peerKey - Peer key linked to the connection to close and remove.
    • closeAllConnections

      public void closeAllConnections()
      Close all outgoing connections from this Peer
    • getConnections

      public HashMap<AccountKey,Connection> getConnections()
      Gets the current set of outbound peer connections from this server
      Returns:
      Set of connections
    • isConnected

      public boolean isConnected(AccountKey peerKey)
      Return true if a specified Peer is connected
      Parameters:
      peerKey - Public Key of Peer
      Returns:
      True if connected
    • getConnection

      public Connection getConnection(AccountKey peerKey)
      Gets a connection based on the peers public key
      Parameters:
      peerKey - Public key of Peer
      Returns:
      Connection instance, or null if not found
    • getConnectionCount

      public int getConnectionCount()
      Returns the number of active connections
      Returns:
      Number of connections
    • getTrustedConnectionCount

      public int getTrustedConnectionCount()
      Returns the number of trusted connections
      Returns:
      Number of trusted connections
    • processChallenge

      public void processChallenge(Message m, Peer thisPeer)
    • requestChallenge

      public void requestChallenge(AccountKey toPeerKey, Connection connection, Peer thisPeer)
      Sends out a challenge to a connection that is not trusted.
      Parameters:
      toPeerKey - Peer key that we need to send the challenge too.
      connection - untrusted connection
      thisPeer - Source peer that the challenge is issued from
    • broadcast

      public void broadcast(Message msg, boolean requireTrusted)
      Parameters:
      msg - Message to broadcast
      requireTrusted - If true, only broadcast to trusted peers
    • connectToPeer

      public Connection connectToPeer(InetSocketAddress hostAddress)
      Connects explicitly to a Peer at the given host address
      Parameters:
      hostAddress - Address to connect to
      Returns:
      new Connection, or null if attempt fails
    • connectToPeerAsync

      public void connectToPeerAsync(InetSocketAddress hostAddress)
      Schedules a request to connect to a Peer at the given host address
      Parameters:
      hostAddress - Address to connect to
    • start

      public void start()
    • close

      public void close()