|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectnet.i2p.client.I2PSessionImpl
net.i2p.client.I2PSessionImpl2
class I2PSessionImpl2
Thread safe implementation of an I2P session running over TCP. Unused directly, see I2PSessionMuxedImpl extension.
Nested Class Summary |
---|
Nested classes/interfaces inherited from class net.i2p.client.I2PSessionImpl |
---|
I2PSessionImpl.AvailabilityNotifier |
Field Summary | |
---|---|
protected boolean |
_noEffort
Don't expect any MSMs from the router for outbound traffic @since 0.8.1 |
Fields inherited from class net.i2p.client.I2PSessionImpl |
---|
_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 |
Fields inherited from interface net.i2p.client.I2PSession |
---|
PORT_ANY, PORT_UNSPECIFIED, PROTO_ANY, PROTO_DATAGRAM, PROTO_DATAGRAM_RAW, PROTO_STREAMING, PROTO_UNSPECIFIED |
Constructor Summary | |
---|---|
|
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 |
protected |
I2PSessionImpl2(I2PAppContext context,
Properties options)
for extension |
Method Summary | |
---|---|
void |
addMuxedSessionListener(I2PSessionMuxedListener l,
int proto,
int port)
Listen on specified protocol and port, and receive notification of proto, fromPort, and toPort for every message. |
void |
addSessionListener(I2PSessionListener lsnr,
int proto,
int port)
Listen on specified protocol and port. |
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)
removes the specified listener (only) |
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)
unused, see MuxedImpl override |
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,
int proto,
int fromport,
int toport,
SendMessageOptions options)
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)
Unused? see MuxedImpl override |
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,
int flags)
Same as sendBestEffort(), except we do not expect any MessageStatusMessage responses - not for accepted, or success, or failure. |
protected boolean |
shouldCompress(int size)
|
Methods inherited from class net.i2p.client.I2PSessionImpl |
---|
addNewMessage, bandwidthLimits, bwReceived, connect, dateUpdated, destLookupFailed, destReceived, destroySession, disconnect, disconnected, getDecryptionKey, getFastReceive, getLeaseSet, getMyDestination, getOpening, getOptions, getPrefix, getPrivateKey, getProducer, getSessionId, isClosed, lastActivity, lookupDest, lookupDest, messageReceived, propogateError, readError, reportAbuse, sendMessage, setLeaseSet, setOpening, setReduced, setSessionId, setSessionListener, shouldReconnect, toString, updateActivity, updateOptions |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected boolean _noEffort
Constructor Detail |
---|
protected I2PSessionImpl2(I2PAppContext context, Properties options)
public I2PSessionImpl2(I2PAppContext ctx, InputStream destKeyStream, Properties options) throws I2PSessionException
destKeyStream
- stream containing the private key data,
format is specified in PrivateKeyFile
options
- set of options to configure the router with, if null will use System properties
I2PSessionException
- if there is a problem loading the private keys orMethod Detail |
---|
protected 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
proto
- 1-254 or PROTO_ANY (0) for all; recommended:
I2PSession.PROTO_STREAMING
I2PSession.PROTO_DATAGRAM
255 disallowedport
- 1-65535 or PORT_ANY (0) for allpublic void addMuxedSessionListener(I2PSessionMuxedListener l, int proto, int port)
I2PSession
proto
- 1-254 or PROTO_ANY (0) for all; 255 disallowedport
- 1-65535 or PORT_ANY (0) for allpublic 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.expire
- absolute expiration timestamp, NOT interval from now
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.expire
- absolute expiration timestamp, NOT interval from now
I2PSessionException
public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, int proto, int fromport, int toport, SendMessageOptions options) throws I2PSessionException
I2PSession
I2PSessionException
public boolean sendMessage(Destination dest, byte[] payload) throws I2PSessionException
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 crypto
I2PSessionException
public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expires) throws I2PSessionException
keyUsed
- unused - no end-to-end cryptotagsSent
- unused - no end-to-end cryptoexpires
- absolute expiration timestamp, NOT interval from now
I2PSessionException
public byte[] receiveMessage(int msgId) throws I2PSessionException
receiveMessage
in interface I2PSession
receiveMessage
in class I2PSessionImpl
msgId
- message to fetch
I2PSessionException
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 crypto
I2PSessionException
protected boolean sendBestEffort(Destination dest, byte[] payload, long expires, int flags) throws I2PSessionException
flags
- to be passed to the router
I2PSessionException
protected boolean sendNoEffort(Destination dest, byte[] payload, long expires, int flags) throws I2PSessionException
I2PSessionException
public void receiveStatus(int msgId, long nonce, int status)
receiveStatus
in class I2PSessionImpl
status
- != 0protected boolean reconnect()
reconnect
in class I2PSessionImpl
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |