Module convex.peer
Package convex.peer

Class ConnectionManager

java.lang.Object
convex.peer.AThreadedComponent
convex.peer.ConnectionManager

public class ConnectionManager extends AThreadedComponent
Class for managing the outbound Peer 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
  • Constructor Details

    • ConnectionManager

      public ConnectionManager(Server server)
  • Method Details

    • maintainConnections

      protected void maintainConnections() throws InterruptedException
      Throws:
      InterruptedException
    • closeConnection

      public void closeConnection(AccountKey peerKey, String reason)
      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,Convex> 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 Convex 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
    • processChallenge

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

      public void requestChallenge(AccountKey toPeerKey, AConnection 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)
      Broadcasts a Message to all connected Peers
      Parameters:
      msg - Message to broadcast
    • connectToPeer

      public Convex connectToPeer(InetSocketAddress hostAddress) throws InterruptedException, IOException, TimeoutException
      Connects explicitly to a Peer at the given host address
      Parameters:
      hostAddress - Address to connect to
      Returns:
      new Convex connection, or null if attempt fails
      Throws:
      InterruptedException
      TimeoutException
      IOException
    • addConnection

      public void addConnection(AccountKey peerKey, Convex convex)
    • close

      public void close()
      Description copied from class: AThreadedComponent
      Close this threaded component, including interrupting any running thread(s). Subclasses may override, but should call `super.close()` to close the main thread
      Overrides:
      close in class AThreadedComponent
    • start

      public void start()
      Description copied from class: AThreadedComponent
      Start the threaded component
      Overrides:
      start in class AThreadedComponent
    • loop

      protected void loop() throws InterruptedException
      Specified by:
      loop in class AThreadedComponent
      Throws:
      InterruptedException
    • getThreadName

      protected String getThreadName()
      Specified by:
      getThreadName in class AThreadedComponent
    • alertBadMessage

      public void alertBadMessage(Message m, String reason)
      Called to signal a bad / corrupt message from a Peer.
      Parameters:
      m - Message of concern
      reason - Reason message considered bad
    • alertMissing

      public void alertMissing(Message m, MissingDataException e, AccountKey peerKey)
      Called to signal missing data in a Belief / Order
      Parameters:
      m - Message which caused alert
      e - Missing data exception encountered
      peerKey - Peer key which triggered missing data