Package net.i2p.sam
Class SAMv3StreamSession
java.lang.Object
net.i2p.sam.SAMStreamSession
net.i2p.sam.SAMv3StreamSession
- All Implemented Interfaces:
Closeable,AutoCloseable,SAMMessageSess,Session
- Direct Known Subclasses:
PrimarySession
SAMv3 STREAM session class.
- Author:
- mkvore
-
Nested Class Summary
Nested classes/interfaces inherited from class net.i2p.sam.SAMStreamSession
SAMStreamSession.DisconnectListener, SAMStreamSession.SAMStreamSessionServer, SAMStreamSession.SAMStreamSessionSocketReader, SAMStreamSession.SAMv1StreamSessionSocketReader, SAMStreamSession.StreamSender -
Field Summary
Fields inherited from class net.i2p.sam.SAMStreamSession
_isOwnSession, _log, canCreate, DEFAULT_FORCE_FLUSH, forceFlush, PROP_FORCE_FLUSH, recv, server, SOCKET_HANDLER_BUF_SIZE, socketMgr -
Constructor Summary
ConstructorsConstructorDescriptionSAMv3StreamSession(String login) Create a new SAM STREAM session, according to information registered with the given nickname Caller MUST call start().SAMv3StreamSession(String login, Properties props, SAMv3Handler handler, I2PSocketManager mgr, int listenPort) Build a Stream Session on an existing I2P session registered with the given nickname Caller MUST call start(). -
Method Summary
Modifier and TypeMethodDescriptionvoidaccept(SAMv3Handler handler, boolean verbose) Accept a single incoming STREAM on the socket stolen from the handler.voidclose()Close the stream session TODO Why do we override?voidconnect(SAMv3Handler handler, String dest, Properties props) Connect the SAM STREAM session to the specified Destination for a single connection, using the socket stolen from the handler.static SessionsDBgetDB()getNick()protected I2PServerSocketbooleanqueueSocket(I2PSocket sock) Put a socket on the accept queue.voidstartForwardingIncoming(Properties props, boolean sendPorts) Forward sockets from I2P to the host/port provided.voidstop Forwarding Incoming connection coming from I2PMethods inherited from class net.i2p.sam.SAMStreamSession
checkSocketHandlerId, closeConnection, connect, createSocketHandler, getDestination, getListenPort, getListenProtocol, getSocketReader, newSAMStreamSessionSocketReader, newStreamSender, removeSocketHandler, sendBytes, sendBytes, sendBytes, setReceiveLimit, startMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface net.i2p.sam.SAMMessageSess
getDestination, getListenPort, getListenProtocol, sendBytes, sendBytes, start
-
Constructor Details
-
SAMv3StreamSession
Create a new SAM STREAM session, according to information registered with the given nickname Caller MUST call start().- Parameters:
login- The nickname- Throws:
IOExceptionDataFormatExceptionSAMExceptionNullPointerException- if login nickname is not registered
-
SAMv3StreamSession
public SAMv3StreamSession(String login, Properties props, SAMv3Handler handler, I2PSocketManager mgr, int listenPort) throws IOException, DataFormatException, SAMException Build a Stream Session on an existing I2P session registered with the given nickname Caller MUST call start().- Parameters:
login- nickname of the session- Throws:
IOExceptionDataFormatExceptionSAMException- Since:
- 0.9.25
-
-
Method Details
-
getNick
-
queueSocket
Put a socket on the accept queue. Only for subsession, throws IllegalStateException otherwise.- Returns:
- success, false if full
- Since:
- 0.9.25
-
getDB
-
connect
public void connect(SAMv3Handler handler, String dest, Properties props) throws I2PException, ConnectException, NoRouteToHostException, DataFormatException, InterruptedIOException, IOException Connect the SAM STREAM session to the specified Destination for a single connection, using the socket stolen from the handler.- Parameters:
handler- The handler that communicates with the requesting clientdest- Base64-encoded Destination to connect toprops- Options to be used for connection- Throws:
DataFormatException- if the destination is not validConnectException- if the destination refuses connectionsNoRouteToHostException- if the destination can't be reachedInterruptedIOException- if the connection timeoutsI2PException- if there's another I2P-related errorIOException
-
accept
public void accept(SAMv3Handler handler, boolean verbose) throws I2PException, InterruptedIOException, IOException, SAMException Accept a single incoming STREAM on the socket stolen from the handler. As of version 3.2 (0.9.24), multiple simultaneous accepts are allowed. Accepts and forwarding may not be done at the same time.- Parameters:
handler- The handler that communicates with the requesting clientverbose- If true, SAM will send the Base64-encoded peer Destination of an incoming socket as the first line of data sent to its client on the handler socket- Throws:
DataFormatException- if the destination is not validConnectException- if the destination refuses connectionsNoRouteToHostException- if the destination can't be reachedInterruptedIOException- if the connection timeoutsI2PException- if there's another I2P-related errorIOExceptionSAMException
-
startForwardingIncoming
public void startForwardingIncoming(Properties props, boolean sendPorts) throws SAMException, InterruptedIOException Forward sockets from I2P to the host/port provided. Accepts and forwarding may not be done at the same time.- Throws:
SAMExceptionInterruptedIOException
-
getSocketServer
-
stopForwardingIncoming
stop Forwarding Incoming connection coming from I2P- Throws:
SAMExceptionInterruptedIOException
-
close
public void close()Close the stream session TODO Why do we override?- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein interfaceSAMMessageSess- Overrides:
closein classSAMStreamSession
-