net.i2p.client.streaming
Class ConnectionManager

java.lang.Object
  extended by net.i2p.client.streaming.ConnectionManager

 class ConnectionManager
extends Object

Coordinate all of the connections for a single local destination.


Nested Class Summary
static interface ConnectionManager.PingNotifier
           
 
Constructor Summary
ConnectionManager(I2PAppContext context, I2PSession session, int maxConcurrent, ConnectionOptions defaultOptions)
           
 
Method Summary
 boolean answerPings()
          do we respond to pings that aren't on an existing connection?
 Connection connect(Destination peer, ConnectionOptions opts)
          Build a new connection to the given peer.
 void disconnectAllHard()
          Something b0rked hard, so kill all of our connections without mercy.
 boolean getAllowIncomingConnections()
           
(package private)  Connection getConnectionByInboundId(long id)
           
(package private)  Connection getConnectionByOutboundId(long id)
          not guaranteed to be unique, but in case we receive more than one packet on an inbound connection that we havent ack'ed yet...
 ConnectionHandler getConnectionHandler()
           
 MessageHandler getMessageHandler()
           
 PacketHandler getPacketHandler()
           
 PacketQueue getPacketQueue()
           
 I2PSession getSession()
           
 long getSoTimeout()
          Get the socket accept() timeout.
 Set<Connection> listConnections()
          return a set of Connection objects
 boolean ping(Destination peer, long timeoutMs)
          blocking
 boolean ping(Destination peer, long timeoutMs, boolean blocking)
           
 boolean ping(Destination peer, long timeoutMs, boolean blocking, ConnectionManager.PingNotifier notifier)
           
 boolean ping(Destination peer, long timeoutMs, boolean blocking, SessionKey keyToUse, Set tagsToSend, ConnectionManager.PingNotifier notifier)
          Deprecated. I2PSession ignores tags, use non-tag variant
 Connection receiveConnection(Packet synPacket)
          Create a new connection based on the SYN packet we received.
(package private)  void receivePong(long pingId)
           
 void removeConnection(Connection con)
          Drop the (already closed) connection on the floor.
 void setAllowIncomingConnections(boolean allow)
           
 void setSoTimeout(long x)
          Set the socket accept() timeout.
 void updateOptsFromShare(Connection con)
           
 void updateShareOpts(Connection con)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ConnectionManager

public ConnectionManager(I2PAppContext context,
                         I2PSession session,
                         int maxConcurrent,
                         ConnectionOptions defaultOptions)
Method Detail

getConnectionByInboundId

Connection getConnectionByInboundId(long id)

getConnectionByOutboundId

Connection getConnectionByOutboundId(long id)
not guaranteed to be unique, but in case we receive more than one packet on an inbound connection that we havent ack'ed yet...


setSoTimeout

public void setSoTimeout(long x)
Set the socket accept() timeout.

Parameters:
x -

getSoTimeout

public long getSoTimeout()
Get the socket accept() timeout.

Returns:
accept timeout in ms.

setAllowIncomingConnections

public void setAllowIncomingConnections(boolean allow)

getAllowIncomingConnections

public boolean getAllowIncomingConnections()
Returns:
if we should accept connections

receiveConnection

public Connection receiveConnection(Packet synPacket)
Create a new connection based on the SYN packet we received.

Parameters:
synPacket - SYN packet to process
Returns:
created Connection with the packet's data already delivered to it, or null if the syn's streamId was already taken

connect

public Connection connect(Destination peer,
                          ConnectionOptions opts)
Build a new connection to the given peer. This blocks if there is no connection delay, otherwise it returns immediately.

Parameters:
peer - Destination to contact
opts - Connection's options
Returns:
new connection, or null if we have exceeded our limit

getMessageHandler

public MessageHandler getMessageHandler()

getPacketHandler

public PacketHandler getPacketHandler()

getSession

public I2PSession getSession()

updateOptsFromShare

public void updateOptsFromShare(Connection con)

updateShareOpts

public void updateShareOpts(Connection con)

getConnectionHandler

public ConnectionHandler getConnectionHandler()

getPacketQueue

public PacketQueue getPacketQueue()

answerPings

public boolean answerPings()
do we respond to pings that aren't on an existing connection?


disconnectAllHard

public void disconnectAllHard()
Something b0rked hard, so kill all of our connections without mercy. Don't bother sending close packets.


removeConnection

public void removeConnection(Connection con)
Drop the (already closed) connection on the floor.

Parameters:
con - Connection to drop.

listConnections

public Set<Connection> listConnections()
return a set of Connection objects

Returns:
set of Connection objects

ping

public boolean ping(Destination peer,
                    long timeoutMs)
blocking


ping

public boolean ping(Destination peer,
                    long timeoutMs,
                    boolean blocking)

ping

public boolean ping(Destination peer,
                    long timeoutMs,
                    boolean blocking,
                    SessionKey keyToUse,
                    Set tagsToSend,
                    ConnectionManager.PingNotifier notifier)
Deprecated. I2PSession ignores tags, use non-tag variant

Parameters:
keyToUse - ignored
tagsToSend - ignored

ping

public boolean ping(Destination peer,
                    long timeoutMs,
                    boolean blocking,
                    ConnectionManager.PingNotifier notifier)

receivePong

void receivePong(long pingId)