class SAMStreamSession extends Object
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 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 |
Constructor and Description |
---|
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.
|
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.
|
(package private) boolean |
setReceiveLimit(int id,
long limit,
boolean nolimit) |
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 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")props
- Properties to setup the I2P sessionrecv
- Object that will receive incoming dataIOException
DataFormatException
SAMException
public 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")props
- Properties to setup the I2P sessionrecv
- Object that will receive incoming dataIOException
DataFormatException
SAMException
public Destination getDestination()
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()
public boolean closeConnection(int id)
id
- Connection idprotected 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