Package net.i2p.sam

Class SAMv3Handler

All Implemented Interfaces:
Runnable, Handler, SAMDatagramReceiver, SAMRawReceiver, SAMStreamReceiver

class SAMv3Handler extends SAMv1Handler
Class able to handle a SAM version 3 client connection.
Author:
mkvore
  • Field Details

    • sSessionsHash

      public static final SessionsDB sSessionsHash
  • Constructor Details

    • SAMv3Handler

      public SAMv3Handler(SocketChannel s, int verMajor, int verMinor, SAMBridge parent) throws SAMException, IOException
      Create a new SAM version 3 handler. This constructor expects that the SAM HELLO message has been still answered (and stripped) from the socket input stream.
      Parameters:
      s - Socket attached to a SAM client
      verMajor - SAM major version to manage (should be 3)
      verMinor - SAM minor version to manage
      Throws:
      SAMException
      IOException
    • SAMv3Handler

      public SAMv3Handler(SocketChannel s, int verMajor, int verMinor, Properties i2cpProps, SAMBridge parent) throws SAMException, IOException
      Create a new SAM version 3 handler. This constructor expects that the SAM HELLO message has been still answered (and stripped) from the socket input stream.
      Parameters:
      s - Socket attached to a SAM client
      verMajor - SAM major version to manage (should be 3)
      verMinor - SAM minor version to manage
      i2cpProps - properties to configure the I2CP connection (host, port, etc)
      Throws:
      SAMException
      IOException
  • Method Details

    • verifVersion

      public boolean verifVersion()
      Overrides:
      verifVersion in class SAMv1Handler
    • getClientIP

      public String getClientIP()
    • stealSocket

      public void stealSocket()
      For SAMv3StreamSession connect and accept
    • getBridge

      SAMBridge getBridge()
      For SAMv3StreamSession
      Since:
      0.9.20
    • getSession

      Session getSession()
      For SAMv3DatagramServer
      Returns:
      may be null
      Since:
      0.9.24
    • setSession

      void setSession(SAMv3RawSession sess)
      For subsessions created by PrimarySession
      Since:
      0.9.25
    • setSession

      void setSession(SAMv3DatagramSession sess)
      For subsessions created by PrimarySession
      Since:
      0.9.25
    • setSession

      void setSession(SAMv3StreamSession sess)
      For subsessions created by PrimarySession
      Since:
      0.9.25
    • handle

      public void handle()
      Description copied from class: SAMHandler
      Actually handle the SAM protocol.
      Overrides:
      handle in class SAMv1Handler
    • stopHandling

      public void stopHandling()
      Stop the SAM handler, close the socket, unregister with the bridge. Overridden to not close the client socket if stolen.
      Specified by:
      stopHandling in interface Handler
      Overrides:
      stopHandling in class SAMHandler
      Since:
      0.9.20
    • execSessionMessage

      protected boolean execSessionMessage(String opcode, Properties props)
      Overrides:
      execSessionMessage in class SAMv1Handler
    • execStreamMessage

      protected boolean execStreamMessage(String opcode, Properties props)
      Overrides:
      execStreamMessage in class SAMv1Handler
    • execStreamConnect

      protected boolean execStreamConnect(Properties props)
      Overrides:
      execStreamConnect in class SAMv1Handler
    • notifyStreamResult

      public void notifyStreamResult(boolean verbose, String result, String message) throws IOException
      Parameters:
      verbose - if false, does nothing
      result - non-null
      message - may be null
      Throws:
      IOException
    • notifyStreamIncomingConnection

      public void notifyStreamIncomingConnection(Destination d, int fromPort, int toPort) throws IOException
      Throws:
      IOException
    • notifyStreamIncomingConnection

      public static void notifyStreamIncomingConnection(SocketChannel client, Destination d) throws IOException
      Throws:
      IOException
    • notifyStreamIncomingConnection

      public static void notifyStreamIncomingConnection(SocketChannel client, Destination d, int fromPort, int toPort) throws IOException
      Throws:
      IOException
      Since:
      0.9.24