net.i2p.client
class I2PSessionImpl2 extends I2PSessionImpl
I2PSessionImpl.AvailabilityNotifier, I2PSessionImpl.VerifyUsage
_availabilityNotifier, _availableMessages, _bwLimits, _bwReceivedLock, _closed, _closing, _context, _handlerMap, _hostname, _log, _opening, _out, _pendingLookups, _portNum, _producer, _queue, _reader, _sessionListener, _socket, _writer, LISTEN_PORT, PROP_ENABLE_SSL
PORT_ANY, PORT_UNSPECIFIED, PROTO_ANY, PROTO_DATAGRAM, PROTO_STREAMING, PROTO_UNSPECIFIED
Constructor and Description |
---|
I2PSessionImpl2()
for extension
|
I2PSessionImpl2(I2PAppContext ctx,
InputStream destKeyStream,
Properties options)
Create a new session, reading the Destination, PrivateKey, and SigningPrivateKey
from the destKeyStream, and using the specified options to connect to the router
|
Modifier and Type | Method and Description |
---|---|
void |
addMuxedSessionListener(I2PSessionMuxedListener l,
int proto,
int port)
See I2PSessionMuxedImpl for details
|
void |
addSessionListener(I2PSessionListener lsnr,
int proto,
int port)
See I2PSessionMuxedImpl for details
|
void |
destroySession(boolean sendDisconnect)
Tear down the session, and do NOT reconnect.
|
protected long |
getTimeout() |
byte[] |
receiveMessage(int msgId)
pull the unencrypted AND DECOMPRESSED data
|
void |
receiveStatus(int msgId,
long nonce,
int status)
Only call this with nonzero status, i.e.
|
protected boolean |
reconnect()
Called whenever we want to reconnect (used only in the superclass).
|
void |
removeListener(int proto,
int port)
See I2PSessionMuxedImpl for details
|
protected boolean |
sendBestEffort(Destination dest,
byte[] payload,
long expires,
int flags)
TODO - Don't need to save MessageState since actuallyWait is false...
|
protected boolean |
sendBestEffort(Destination dest,
byte[] payload,
SessionKey keyUsed,
Set tagsSent,
long expires) |
boolean |
sendMessage(Destination dest,
byte[] payload)
Send a new message to the given destination, containing the specified
payload, returning true if the router feels confident that the message
was delivered.
|
boolean |
sendMessage(Destination dest,
byte[] payload,
int offset,
int size) |
boolean |
sendMessage(Destination dest,
byte[] payload,
int proto,
int fromport,
int toport)
See I2PSessionMuxedImpl for proto/port details.
|
boolean |
sendMessage(Destination dest,
byte[] payload,
int offset,
int size,
SessionKey keyUsed,
Set tagsSent)
End-to-End Crypto is disabled, tags and keys are ignored.
|
boolean |
sendMessage(Destination dest,
byte[] payload,
int offset,
int size,
SessionKey keyUsed,
Set tagsSent,
int proto,
int fromport,
int toport)
See I2PSessionMuxedImpl for proto/port details.
|
boolean |
sendMessage(Destination dest,
byte[] payload,
int offset,
int size,
SessionKey keyUsed,
Set tagsSent,
long expires)
End-to-End Crypto is disabled, tags and keys are ignored.
|
boolean |
sendMessage(Destination dest,
byte[] payload,
int offset,
int size,
SessionKey keyUsed,
Set tagsSent,
long expire,
int proto,
int fromport,
int toport)
See I2PSessionMuxedImpl for proto/port details.
|
boolean |
sendMessage(Destination dest,
byte[] payload,
int offset,
int size,
SessionKey keyUsed,
Set tagsSent,
long expire,
int proto,
int fromport,
int toport,
int flags)
See I2PSessionMuxedImpl for proto/port details.
|
boolean |
sendMessage(Destination dest,
byte[] payload,
SessionKey keyUsed,
Set tagsSent)
End-to-End Crypto is disabled, tags and keys are ignored!
Like sendMessage above, except the key used and the tags sent are exposed to the
application.
|
protected boolean |
sendNoEffort(Destination dest,
byte[] payload,
long expires)
Same as sendBestEffort(), except we do not expect any MessageStatusMessage responses -
not for accepted, or success, or failure.
|
protected boolean |
shouldCompress(int size) |
addNewMessage, bandwidthLimits, bwReceived, connect, dateUpdated, destLookupFailed, destReceived, destroySession, disconnect, disconnected, getDecryptionKey, getLeaseSet, getMyDestination, getOpening, getOptions, getPrefix, getPrivateKey, getProducer, getSessionId, isClosed, lastActivity, loadConfig, lookupDest, lookupDest, messageReceived, propogateError, readError, reportAbuse, sendMessage, setLeaseSet, setOpening, setReduced, setSessionId, setSessionListener, shouldReconnect, toString, updateActivity, updateOptions
public I2PSessionImpl2()
public I2PSessionImpl2(I2PAppContext ctx, InputStream destKeyStream, Properties options) throws I2PSessionException
options
- set of options to configure the router with, if null will use System propertiesI2PSessionException
- if there is a problem loading the private keys orprotected long getTimeout()
public void destroySession(boolean sendDisconnect)
I2PSessionImpl
destroySession
in class I2PSessionImpl
protected boolean shouldCompress(int size)
public void addSessionListener(I2PSessionListener lsnr, int proto, int port)
I2PSession
public void addMuxedSessionListener(I2PSessionMuxedListener l, int proto, int port)
I2PSession
public void removeListener(int proto, int port)
I2PSession
public boolean sendMessage(Destination dest, byte[] payload, int proto, int fromport, int toport) throws I2PSessionException
I2PSession
I2PSessionException
public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, int proto, int fromport, int toport) throws I2PSessionException
I2PSession
keyUsed
- UNUSED, IGNORED.tagsSent
- UNUSED, IGNORED.I2PSessionException
public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expire, int proto, int fromport, int toport) throws I2PSessionException
I2PSession
keyUsed
- UNUSED, IGNORED.tagsSent
- UNUSED, IGNORED.I2PSessionException
public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expire, int proto, int fromport, int toport, int flags) throws I2PSessionException
I2PSession
keyUsed
- UNUSED, IGNORED.tagsSent
- UNUSED, IGNORED.I2PSessionException
public boolean sendMessage(Destination dest, byte[] payload) throws I2PSessionException
I2PSession
dest
- location to send the messagepayload
- body of the message to be sent (unencrypted)I2PSessionException
public boolean sendMessage(Destination dest, byte[] payload, int offset, int size) throws I2PSessionException
I2PSessionException
public boolean sendMessage(Destination dest, byte[] payload, SessionKey keyUsed, Set tagsSent) throws I2PSessionException
I2PSession
SessionKeyManager.getInstance().tagsDelivered(dest.getPublicKey(), keyUsed, tagsSent);If an application is using guaranteed delivery mode, this is not useful, but for applications using best effort delivery mode, if they can know with certainty that a message was delivered and can update the SessionKeyManager appropriately, a significant performance boost will occur (subsequent message encryption and decryption will be done via AES and a SessionTag, rather than ElGamal+AES, which is 1000x slower).
keyUsed
- unused - no end-to-end cryptotagsSent
- unused - no end-to-end cryptodest
- location to send the messagepayload
- body of the message to be sent (unencrypted)I2PSessionException
public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent) throws I2PSessionException
I2PSession
keyUsed
- unused - no end-to-end cryptotagsSent
- unused - no end-to-end cryptoI2PSessionException
public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expires) throws I2PSessionException
I2PSession
keyUsed
- unused - no end-to-end cryptotagsSent
- unused - no end-to-end cryptoI2PSessionException
public byte[] receiveMessage(int msgId) throws I2PSessionException
receiveMessage
in interface I2PSession
receiveMessage
in class I2PSessionImpl
msgId
- message to fetchI2PSessionException
protected boolean sendBestEffort(Destination dest, byte[] payload, SessionKey keyUsed, Set tagsSent, long expires) throws I2PSessionException
keyUsed
- unused - no end-to-end cryptotagsSent
- unused - no end-to-end cryptoI2PSessionException
protected boolean sendBestEffort(Destination dest, byte[] payload, long expires, int flags) throws I2PSessionException
flags
- to be passed to the routerI2PSessionException
protected boolean sendNoEffort(Destination dest, byte[] payload, long expires) throws I2PSessionException
I2PSessionException
public void receiveStatus(int msgId, long nonce, int status)
receiveStatus
in class I2PSessionImpl
status
- != 0protected boolean reconnect()
reconnect
in class I2PSessionImpl