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.
  • Field Details

  • Constructor Details

  • Method Details

    • 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...
    • wasRecentlyClosed

      public boolean wasRecentlyClosed(long inboundID)
      Was this conn recently closed?
      Since:
      0.9.12
    • 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)
    • updateOptions

      public void updateOptions()
    • 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, or if the connection was rejected
    • receivePing

      public 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()
    • connect

      public 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
    • getMessageHandler

      public MessageHandler getMessageHandler()
    • getPacketHandler

      public PacketHandler getPacketHandler()
    • getSession

      public I2PSession getSession()
      This is the primary session only
    • 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. This will not close the ServerSocket. This will not kill the timer threads. CAN continue to use the manager.
    • shutdown

      public 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
    • 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
      Parameters:
      timeoutMs - greater than zero
      Returns:
      true if pong received
    • ping

      public 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
    • ping

      public 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
    • ping

      public 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
    • ping

      public 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
    • receivePong

      void receivePong(long pingId, ByteArray payload)
      Parameters:
      payload - may be null
    • toString

      public String toString()
      Overrides:
      toString in class Object
      Since:
      0.9.21