Package net.i2p.sam
Class SAMv3Handler
- java.lang.Object
-
- net.i2p.sam.SAMHandler
-
- net.i2p.sam.SAMv1Handler
-
- net.i2p.sam.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 Summary
Fields Modifier and Type Field Description static SessionsDB
sSessionsHash
-
Fields inherited from class net.i2p.sam.SAMv1Handler
_id, datagramSession, rawSession, SESSION_ERROR, streamSession
-
Fields inherited from class net.i2p.sam.SAMHandler
_log, bridge, i2cpProps, socket, stopHandler, stopLock, thread, verMajor, verMinor
-
-
Constructor Summary
Constructors Constructor Description SAMv3Handler(SocketChannel s, int verMajor, int verMinor, Properties i2cpProps, SAMBridge parent)
Create a new SAM version 3 handler.SAMv3Handler(SocketChannel s, int verMajor, int verMinor, SAMBridge parent)
Create a new SAM version 3 handler.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected boolean
execSessionMessage(String opcode, Properties props)
protected boolean
execStreamConnect(Properties props)
protected boolean
execStreamMessage(String opcode, Properties props)
(package private) SAMBridge
getBridge()
For SAMv3StreamSessionString
getClientIP()
(package private) Session
getSession()
For SAMv3DatagramServervoid
handle()
Actually handle the SAM protocol.static void
notifyStreamIncomingConnection(SocketChannel client, Destination d)
static void
notifyStreamIncomingConnection(SocketChannel client, Destination d, int fromPort, int toPort)
void
notifyStreamIncomingConnection(Destination d, int fromPort, int toPort)
void
notifyStreamResult(boolean verbose, String result, String message)
(package private) void
setSession(SAMv3DatagramSession sess)
For subsessions created by PrimarySession(package private) void
setSession(SAMv3RawSession sess)
For subsessions created by PrimarySession(package private) void
setSession(SAMv3StreamSession sess)
For subsessions created by PrimarySessionvoid
stealSocket()
For SAMv3StreamSession connect and acceptvoid
stopHandling()
Stop the SAM handler, close the socket, unregister with the bridge.boolean
verifVersion()
-
Methods inherited from class net.i2p.sam.SAMv1Handler
createMessageString, execDatagramMessage, execDestMessage, execNamingMessage, execRawMessage, execStreamClose, execStreamSend, getDatagramSession, getRawSession, getStreamSession, notifyStreamDisconnection, notifyStreamIncomingConnection, notifyStreamOutgoingConnection, notifyStreamSendBufferFree, receiveDatagramBytes, receiveRawBytes, receiveStreamBytes, stopDatagramReceiving, stopRawReceiving, stopStreamReceiving, streamSendAnswer, writeString
-
Methods inherited from class net.i2p.sam.SAMHandler
closeClientSocket, getClientSocket, getWriteLock, run, shouldStop, startHandling, toString, writeBytes, writeString, writeString
-
-
-
-
Field Detail
-
sSessionsHash
public static final SessionsDB sSessionsHash
-
-
Constructor Detail
-
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 clientverMajor
- 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 clientverMajor
- SAM major version to manage (should be 3)verMinor
- SAM minor version to managei2cpProps
- properties to configure the I2CP connection (host, port, etc)- Throws:
SAMException
IOException
-
-
Method Detail
-
verifVersion
public boolean verifVersion()
- Overrides:
verifVersion
in classSAMv1Handler
-
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 classSAMv1Handler
-
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 interfaceHandler
- Overrides:
stopHandling
in classSAMHandler
- Since:
- 0.9.20
-
execSessionMessage
protected boolean execSessionMessage(String opcode, Properties props)
- Overrides:
execSessionMessage
in classSAMv1Handler
-
execStreamMessage
protected boolean execStreamMessage(String opcode, Properties props)
- Overrides:
execStreamMessage
in classSAMv1Handler
-
execStreamConnect
protected boolean execStreamConnect(Properties props)
- Overrides:
execStreamConnect
in classSAMv1Handler
-
notifyStreamResult
public void notifyStreamResult(boolean verbose, String result, String message) throws IOException
- Parameters:
verbose
- if false, does nothingresult
- non-nullmessage
- 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
-
-