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.
|
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 Log _log
protected static final int SOCKET_HANDLER_BUF_SIZE
protected final SAMStreamReceiver recv
protected final SAMStreamSession.SAMStreamSessionServer server
protected final I2PSocketManager socketMgr
protected final boolean canCreate
protected final boolean _isOwnSession
protected final boolean forceFlush
public static final String PROP_FORCE_FLUSH
public static final String DEFAULT_FORCE_FLUSH
public SAMStreamSession(String dest, String dir, Properties props, SAMStreamReceiver recv) throws IOException, DataFormatException, SAMException
dest
- Base64-encoded destination and private keys (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 dataIOException
DataFormatException
SAMException
protected SAMStreamSession(InputStream destStream, String dir, Properties props, SAMStreamReceiver recv) throws IOException, DataFormatException, SAMException
destStream
- Input stream containing the destination and private keys (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 dataIOException
DataFormatException
SAMException
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 dataIOException
DataFormatException
SAMException
public void start()
SAMMessageSess
start
in interface SAMMessageSess
public int getListenProtocol()
getListenProtocol
in interface SAMMessageSess
public int getListenPort()
getListenPort
in interface SAMMessageSess
public Destination getDestination()
getDestination
in interface SAMMessageSess
public 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 errorIOException
public boolean sendBytes(int id, InputStream in, int size) throws IOException
id
- Stream Idin
- Datastream inputsize
- Count of bytes to sendIOException
public void close()
close
in interface Closeable
close
in interface AutoCloseable
close
in interface SAMMessageSess
public boolean closeConnection(int id)
id
- Connection idpublic boolean sendBytes(String s, byte[] b, int pr, int fp, int tp) throws I2PSessionException
sendBytes
in interface SAMMessageSess
s
- 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 SAMMessageSess
I2PSessionException
- alwaysprotected int createSocketHandler(I2PSocket s, int id)
s
- Socket to be handledid
- Socket id, or 0 if it must be auto-generatedprotected SAMStreamSession.SAMStreamSessionSocketReader getSocketReader(int id)
id
- Handler idprotected boolean checkSocketHandlerId(int id)
id
- Handler idprotected void removeSocketHandler(int id)
id
- Handler id to be removedboolean setReceiveLimit(int id, long limit, boolean nolimit)
protected SAMStreamSession.SAMStreamSessionSocketReader newSAMStreamSessionSocketReader(I2PSocket s, int id) throws IOException
IOException
protected SAMStreamSession.StreamSender newStreamSender(I2PSocket s, int id) throws IOException
IOException