Package convex.peer
Class ConnectionManager
java.lang.Object
convex.peer.AThreadedComponent
convex.peer.ConnectionManager
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
-
Field Summary
Fields inherited from class convex.peer.AThreadedComponent
server, thread
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
alertBadMessage
(Message m, String reason) Called to signal a bad / corrupt message from a Peer.void
alertMissing
(Message m, MissingDataException e, AccountKey key) Called to signal missing data in a Belief / Ordervoid
Broadcasts a Message to all connected Peersvoid
close()
Close this threaded component, including interrupting any running thread(s).void
Close all outgoing connections from this Peervoid
closeConnection
(AccountKey peerKey) Close and remove a connectionconnectToPeer
(InetSocketAddress hostAddress) Connects explicitly to a Peer at the given host addressgetConnection
(AccountKey peerKey) Gets a connection based on the peers public keyint
Returns the number of active connectionsGets the current set of outbound peer connections from this serverprotected String
int
Returns the number of trusted connectionsboolean
isConnected
(AccountKey peerKey) Return true if a specified Peer is connectedprotected void
loop()
protected void
void
processChallenge
(Message m, Peer thisPeer) void
requestChallenge
(AccountKey toPeerKey, Connection connection, Peer thisPeer) Sends out a challenge to a connection that is not trusted.void
start()
Start the threaded componentMethods inherited from class convex.peer.AThreadedComponent
finalize, getLoad
-
Constructor Details
-
ConnectionManager
-
-
Method Details
-
maintainConnections
protected void maintainConnections() -
closeConnection
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
Gets the current set of outbound peer connections from this server- Returns:
- Set of connections
-
isConnected
Return true if a specified Peer is connected- Parameters:
peerKey
- Public Key of Peer- Returns:
- True if connected
-
getConnection
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
-
requestChallenge
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 connectionthisPeer
- Source peer that the challenge is issued from
-
broadcast
Broadcasts a Message to all connected Peers- Parameters:
msg
- Message to broadcast- Throws:
InterruptedException
- If broadcast is interrupted
-
connectToPeer
Connects explicitly to a Peer at the given host address- Parameters:
hostAddress
- Address to connect to- Returns:
- new Connection, or null if attempt fails
-
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 classAThreadedComponent
-
start
public void start()Description copied from class:AThreadedComponent
Start the threaded component- Overrides:
start
in classAThreadedComponent
-
loop
- Specified by:
loop
in classAThreadedComponent
- Throws:
InterruptedException
-
getThreadName
- Specified by:
getThreadName
in classAThreadedComponent
-
alertBadMessage
-
alertMissing
Called to signal missing data in a Belief / Order- Parameters:
m
-e
-key
-
-