class SAMStreamSession extends Object implements SAMMessageSess
| Modifier and Type | Class and Description |
|---|---|
protected class |
SAMStreamSession.DisconnectListener |
class |
SAMStreamSession.SAMStreamSessionServer
SAM STREAM session server, running in its own thread.
|
class |
SAMStreamSession.SAMStreamSessionSocketReader
SAM STREAM socket reader, running in its own thread.
|
class |
SAMStreamSession.SAMv1StreamSessionSocketReader |
protected static class |
SAMStreamSession.StreamSender
Lets us push data through the stream without blocking, (even after exceeding
the I2PSocket's buffer)
|
| Modifier and Type | Field and Description |
|---|---|
protected boolean |
_isOwnSession |
protected Log |
_log |
protected boolean |
canCreate |
static String |
DEFAULT_FORCE_FLUSH |
protected boolean |
forceFlush
should we flush every time we get a STREAM SEND, or leave that up to
the streaming lib to decide?
|
static String |
PROP_FORCE_FLUSH |
protected SAMStreamReceiver |
recv |
protected SAMStreamSession.SAMStreamSessionServer |
server |
protected static int |
SOCKET_HANDLER_BUF_SIZE |
protected I2PSocketManager |
socketMgr |
| Modifier | Constructor and Description |
|---|---|
protected |
SAMStreamSession(I2PSocketManager mgr,
Properties props,
SAMStreamReceiver recv,
int listenport)
Create a new SAM STREAM session on an existing socket manager.
|
protected |
SAMStreamSession(InputStream destStream,
String dir,
Properties props,
SAMStreamReceiver recv)
Create a new SAM STREAM session.
|
|
SAMStreamSession(String dest,
String dir,
Properties props,
SAMStreamReceiver recv)
Create a new SAM STREAM session.
|
| Modifier and Type | Method and Description |
|---|---|
protected boolean |
checkSocketHandlerId(int id)
Check whether a SAM STREAM session socket handler id is still in use.
|
void |
close()
Close a SAM STREAM session.
|
boolean |
closeConnection(int id)
Close a connection managed by the SAM STREAM session.
|
boolean |
connect(int id,
String dest,
Properties props)
Connect the SAM STREAM session to the specified Destination
|
protected int |
createSocketHandler(I2PSocket s,
int id)
Create a new SAM STREAM session socket handler, detaching its thread.
|
Destination |
getDestination()
Get the SAM STREAM session Destination.
|
int |
getListenPort() |
int |
getListenProtocol() |
protected SAMStreamSession.SAMStreamSessionSocketReader |
getSocketReader(int id)
Get a SAM STREAM session socket handler.
|
boolean |
isDestroyed()
Is the underlying streaming socket manager destroyed?
|
protected SAMStreamSession.SAMStreamSessionSocketReader |
newSAMStreamSessionSocketReader(I2PSocket s,
int id) |
protected SAMStreamSession.StreamSender |
newStreamSender(I2PSocket s,
int id) |
protected void |
removeSocketHandler(int id)
Remove and gracefully close a SAM STREAM session socket handler.
|
boolean |
sendBytes(int id,
InputStream in,
int size)
Send bytes through a SAM STREAM session.
|
boolean |
sendBytes(String s,
byte[] b,
int pr,
int fp,
int tp)
Unsupported
|
boolean |
sendBytes(String s,
byte[] b,
int pr,
int fp,
int tp,
boolean sendLeaseSet,
int sendTags,
int tagThreshold,
int expiration)
Unsupported
|
(package private) boolean |
setReceiveLimit(int id,
long limit,
boolean nolimit) |
void |
start()
Start a SAM message-based session.
|
protected final boolean _isOwnSession
protected final Log _log
protected final boolean canCreate
public static final String DEFAULT_FORCE_FLUSH
protected final boolean forceFlush
public static final String PROP_FORCE_FLUSH
protected final SAMStreamReceiver recv
protected final SAMStreamSession.SAMStreamSessionServer server
protected static final int SOCKET_HANDLER_BUF_SIZE
protected final I2PSocketManager socketMgr
protected SAMStreamSession(I2PSocketManager mgr, Properties props, SAMStreamReceiver recv, int listenport) throws IOException, DataFormatException, SAMException
props - Properties to setup the I2P sessionrecv - Object that will receive incoming dataIOExceptionDataFormatExceptionSAMExceptionprotected SAMStreamSession(InputStream destStream, String dir, Properties props, SAMStreamReceiver recv) throws IOException, DataFormatException, SAMException
destStream - Input stream containing the binary destination and private keys,
and optional offline signature section (same format as PrivateKeyFile)dir - Session direction ("RECEIVE", "CREATE" or "BOTH") or "__v3__" if extended by SAMv3StreamSessionprops - Properties to setup the I2P sessionrecv - Object that will receive incoming dataIOExceptionDataFormatExceptionSAMExceptionpublic SAMStreamSession(String dest, String dir, Properties props, SAMStreamReceiver recv) throws IOException, DataFormatException, SAMException
dest - Base64-encoded destination and private keys,
and optional offline signature section (same format as PrivateKeyFile)dir - Session direction ("RECEIVE", "CREATE" or "BOTH") or "__v3__" if extended by SAMv3StreamSessionprops - Properties to setup the I2P sessionrecv - Object that will receive incoming dataIOExceptionDataFormatExceptionSAMExceptionprotected boolean checkSocketHandlerId(int id)
id - Handler idpublic void close()
close in interface Closeableclose in interface AutoCloseableclose in interface SAMMessageSesspublic boolean closeConnection(int id)
id - Connection idpublic boolean connect(int id,
String dest,
Properties props)
throws I2PException,
ConnectException,
NoRouteToHostException,
DataFormatException,
InterruptedIOException,
SAMInvalidDirectionException,
IOException
id - Unique id for the connectiondest - Base64-encoded Destination to connect toprops - Options to be used for connectionDataFormatException - if the destination is not validSAMInvalidDirectionException - if trying to connect through a
receive-only sessionConnectException - if the destination refuses connectionsNoRouteToHostException - if the destination can't be reachedInterruptedIOException - if the connection timeoutsI2PException - if there's another I2P-related errorIOExceptionprotected int createSocketHandler(I2PSocket s, int id)
s - Socket to be handledid - Socket id, or 0 if it must be auto-generatedpublic Destination getDestination()
getDestination in interface SAMMessageSesspublic int getListenPort()
getListenPort in interface SAMMessageSesspublic int getListenProtocol()
getListenProtocol in interface SAMMessageSessprotected SAMStreamSession.SAMStreamSessionSocketReader getSocketReader(int id)
id - Handler idpublic boolean isDestroyed()
protected SAMStreamSession.SAMStreamSessionSocketReader newSAMStreamSessionSocketReader(I2PSocket s, int id) throws IOException
IOExceptionprotected SAMStreamSession.StreamSender newStreamSender(I2PSocket s, int id) throws IOException
IOExceptionprotected void removeSocketHandler(int id)
id - Handler id to be removedpublic boolean sendBytes(int id,
InputStream in,
int size)
throws IOException
id - Stream Idin - Datastream inputsize - Count of bytes to sendIOExceptionpublic boolean sendBytes(String s, byte[] b, int pr, int fp, int tp) throws I2PSessionException
sendBytes in interface SAMMessageSesss - Destinationb - Bytes to be sentI2PSessionException - alwayspublic boolean sendBytes(String s, byte[] b, int pr, int fp, int tp, boolean sendLeaseSet, int sendTags, int tagThreshold, int expiration) throws I2PSessionException
sendBytes in interface SAMMessageSessI2PSessionException - alwaysboolean setReceiveLimit(int id,
long limit,
boolean nolimit)
public void start()
SAMMessageSessstart in interface SAMMessageSess