Package net.i2p.client.streaming.impl
Class ConnectionManager
- java.lang.Object
- 
- net.i2p.client.streaming.impl.ConnectionManager
 
- 
 class ConnectionManager extends Object Coordinate all of the connections for a single local destination.
- 
- 
Nested Class SummaryNested Classes Modifier and Type Class Description static interfaceConnectionManager.PingNotifierThe callback interface for a pong.
 - 
Field SummaryFields Modifier and Type Field Description static StringPROP_BLACKLIST
 - 
Constructor SummaryConstructors Constructor Description ConnectionManager(I2PAppContext context, I2PSession session, ConnectionOptions defaultOptions, IncomingConnectionFilter connectionFilter)Manage all conns for this session
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description booleananswerPings()do we respond to pings that aren't on an existing connection?Connectionconnect(Destination peer, ConnectionOptions opts, I2PSession session)Build a new connection to the given peer.voiddisconnectAllHard()Something b0rked hard, so kill all of our connections without mercy.booleangetAllowIncomingConnections()(package private) ConnectiongetConnectionByInboundId(long id)(package private) ConnectiongetConnectionByOutboundId(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...ConnectionHandlergetConnectionHandler()MessageHandlergetMessageHandler()PacketHandlergetPacketHandler()PacketQueuegetPacketQueue()I2PSessiongetSession()This is the primary session onlylonggetSoTimeout()Get the socket accept() timeout.Set<Connection>listConnections()return a set of Connection objectsbooleanping(Destination peer, int fromPort, int toPort, long timeoutMs)blockingbooleanping(Destination peer, int fromPort, int toPort, long timeoutMs, boolean blocking)booleanping(Destination peer, int fromPort, int toPort, long timeoutMs, boolean blocking, ConnectionManager.PingNotifier notifier)byte[]ping(Destination peer, int fromPort, int toPort, long timeoutMs, byte[] payload)blockingbooleanping(Destination peer, long timeoutMs)blockingConnectionreceiveConnection(Packet synPacket)Create a new connection based on the SYN packet we received.booleanreceivePing(Connection con, Packet ping)Process a ping by checking for throttling, etc., then sending a pong.(package private) voidreceivePong(long pingId, ByteArray payload)voidremoveConnection(Connection con)Drop the (already closed) connection on the floor.voidsetAllowIncomingConnections(boolean allow)voidsetSoTimeout(long x)Set the socket accept() timeout.voidshutdown()Kill all connections and the timers.StringtoString()voidupdateOptions()voidupdateOptsFromShare(Connection con)voidupdateShareOpts(Connection con)booleanwasRecentlyClosed(long inboundID)Was this conn recently closed?
 
- 
- 
- 
Field Detail- 
PROP_BLACKLISTpublic static final String PROP_BLACKLIST - Since:
- 0.9.3
- See Also:
- Constant Field Values
 
 
- 
 - 
Constructor Detail- 
ConnectionManagerpublic ConnectionManager(I2PAppContext context, I2PSession session, ConnectionOptions defaultOptions, IncomingConnectionFilter connectionFilter) Manage all conns for this session
 
- 
 - 
Method Detail- 
getConnectionByInboundIdConnection getConnectionByInboundId(long id) 
 - 
getConnectionByOutboundIdConnection 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...
 - 
wasRecentlyClosedpublic boolean wasRecentlyClosed(long inboundID) Was this conn recently closed?- Since:
- 0.9.12
 
 - 
setSoTimeoutpublic void setSoTimeout(long x) Set the socket accept() timeout.- Parameters:
- x-
 
 - 
getSoTimeoutpublic long getSoTimeout() Get the socket accept() timeout.- Returns:
- accept timeout in ms.
 
 - 
setAllowIncomingConnectionspublic void setAllowIncomingConnections(boolean allow) 
 - 
updateOptionspublic void updateOptions() 
 - 
getAllowIncomingConnectionspublic boolean getAllowIncomingConnections() - Returns:
- if we should accept connections
 
 - 
receiveConnectionpublic 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, or if the connection was rejected
 
 - 
receivePingpublic boolean receivePing(Connection con, Packet ping) Process a ping by checking for throttling, etc., then sending a pong.- Parameters:
- con- null if unknown
- ping- Ping packet to process, must have From and Sig fields, with signature already verified, only if answerPings() returned true
- Returns:
- true if we sent a pong
- Since:
- 0.9.12 from PacketHandler.receivePing()
 
 - 
connectpublic Connection connect(Destination peer, ConnectionOptions opts, I2PSession session) 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, non-null
- opts- Connection's options
- session- generally the session from the constructor, but could be a subsession
- Returns:
- new connection, or null if we have exceeded our limit
 
 - 
getMessageHandlerpublic MessageHandler getMessageHandler() 
 - 
getPacketHandlerpublic PacketHandler getPacketHandler() 
 - 
getSessionpublic I2PSession getSession() This is the primary session only
 - 
updateOptsFromSharepublic void updateOptsFromShare(Connection con) 
 - 
updateShareOptspublic void updateShareOpts(Connection con) 
 - 
getConnectionHandlerpublic ConnectionHandler getConnectionHandler() 
 - 
getPacketQueuepublic PacketQueue getPacketQueue() 
 - 
answerPingspublic boolean answerPings() do we respond to pings that aren't on an existing connection?
 - 
disconnectAllHardpublic void disconnectAllHard() Something b0rked hard, so kill all of our connections without mercy. Don't bother sending close packets. This will not close the ServerSocket. This will not kill the timer threads. CAN continue to use the manager.
 - 
shutdownpublic void shutdown() Kill all connections and the timers. Don't bother sending close packets. As of 0.9.17, this will close the ServerSocket, killing one thread in accept(). CANNOT continue to use the manager or restart.- Since:
- 0.9.7
 
 - 
removeConnectionpublic void removeConnection(Connection con) Drop the (already closed) connection on the floor.- Parameters:
- con- Connection to drop.
 
 - 
listConnectionspublic Set<Connection> listConnections() return a set of Connection objects- Returns:
- set of Connection objects
 
 - 
pingpublic boolean ping(Destination peer, long timeoutMs) blocking- Parameters:
- timeoutMs- greater than zero
- Returns:
- true if pong received
 
 - 
pingpublic boolean ping(Destination peer, int fromPort, int toPort, long timeoutMs) blocking- Parameters:
- timeoutMs- greater than zero
- Returns:
- true if pong received
- Since:
- 0.9.12 added port args
 
 - 
pingpublic boolean ping(Destination peer, int fromPort, int toPort, long timeoutMs, boolean blocking) - Parameters:
- timeoutMs- greater than zero
- Returns:
- true if blocking and pong received
- Since:
- 0.9.12 added port args
 
 - 
pingpublic boolean ping(Destination peer, int fromPort, int toPort, long timeoutMs, boolean blocking, ConnectionManager.PingNotifier notifier) - Parameters:
- timeoutMs- greater than zero
- notifier- may be null
- Returns:
- true if blocking and pong received
- Since:
- 0.9.12 added port args
 
 - 
pingpublic byte[] ping(Destination peer, int fromPort, int toPort, long timeoutMs, byte[] payload) blocking- Parameters:
- timeoutMs- greater than zero
- payload- non-null, include in packet, up to 32 bytes may be returned in pong not copied, do not modify
- Returns:
- the payload received in the pong, zero-length if none, null on failure or timeout
- Since:
- 0.9.18
 
 - 
receivePongvoid receivePong(long pingId, ByteArray payload)- Parameters:
- payload- may be null
 
 
- 
 
-