net.i2p.client.streaming
Class ConnectionManager

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

public class ConnectionManager
extends java.lang.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()
           
 java.util.Set<Connection> listConnections()
          return a set of Connection objects
 long MgetSoTimeout()
          Get the socket accept() timeout.
 void MsetSoTimeout(long x)
          Set the socket accept() timeout.
 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, java.util.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 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...


MsetSoTimeout

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

Parameters:
x -

MgetSoTimeout

public long MgetSoTimeout()
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 java.util.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,
                    java.util.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)