Package net.i2p.data.i2np
Class DatabaseLookupMessage
java.lang.Object
net.i2p.data.i2np.I2NPMessageImpl
net.i2p.data.i2np.FastI2NPMessageImpl
net.i2p.data.i2np.DatabaseLookupMessage
- All Implemented Interfaces:
I2NPMessage
public class DatabaseLookupMessage extends FastI2NPMessageImpl
Defines the message a router sends to another router to search for a
key in the network database.
- Author:
- jrandom
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
DatabaseLookupMessage.Type
Nested classes/interfaces inherited from class net.i2p.data.i2np.I2NPMessageImpl
I2NPMessageImpl.Builder
-
Field Summary
Fields Modifier and Type Field Description static int
MESSAGE_TYPE
static boolean
USE_ECIES_FF
Fields inherited from class net.i2p.data.i2np.I2NPMessageImpl
_context, _expiration, _log, CHECKSUM_LENGTH, DEFAULT_EXPIRATION_MS, HEADER_LENGTH
-
Constructor Summary
Constructors Constructor Description DatabaseLookupMessage(I2PAppContext context)
DatabaseLookupMessage(I2PAppContext context, boolean locallyCreated)
-
Method Summary
Modifier and Type Method Description void
addDontIncludePeer(Hash peer)
Add to the set.void
addDontIncludePeers(Collection<Hash> peers)
Add to the set.protected int
calculateWrittenLength()
calculate the message body's length (not including the header and footerboolean
equals(Object object)
Set<Hash>
getDontIncludePeers()
Set of peers that a lookup reply should NOT include.Hash
getFrom()
Contains the router who requested this lookupPublicKey
getRatchetPublicKey()
The included session key or null if unset.RatchetSessionTag
getRatchetReplyTag()
The included session tag or null if unsetSessionKey
getReplyKey()
The included session key or null if unset.SessionTag
getReplyTag()
The included session tag or null if unsetTunnelId
getReplyTunnel()
Contains the tunnel ID a reply should be sent toHash
getSearchKey()
Defines the key being searched forDatabaseLookupMessage.Type
getSearchType()
Defines the type of data being searched for.int
getType()
Return the unique identifier for this type of I2NP message, as defined in the I2NP specint
hashCode()
void
readMessage(byte[] data, int offset, int dataSize, int type)
Read the body into the data structures, after the initial type byte and the uniqueId / expiration, using the current class's format as defined by the I2NP specificationvoid
setDontIncludePeers(Collection<Hash> peers)
Replace the dontInclude set with this set.void
setFrom(Hash from)
void
setReplySession(PublicKey pubKey)
Ratchet.void
setReplySession(SessionKey encryptKey, SessionTag encryptTag)
Only worthwhile if sending reply via tunnelvoid
setReplySession(SessionKey encryptKey, RatchetSessionTag encryptTag)
Ratchetvoid
setReplyTunnel(TunnelId replyTunnel)
void
setSearchKey(Hash key)
void
setSearchType(DatabaseLookupMessage.Type type)
Defines the type of data being searched for.static boolean
supportsEncryptedReplies(RouterInfo to)
Does this router support encrypted replies?static boolean
supportsRatchetReplies(RouterInfo to)
Does this router support ratchet replies?String
toString()
protected int
writeMessageBody(byte[] out, int curIndex)
write the message body to the output array, starting at the given index.Methods inherited from class net.i2p.data.i2np.FastI2NPMessageImpl
readBytes, toByteArray, toByteArrayWithSavedChecksum
Methods inherited from class net.i2p.data.i2np.I2NPMessageImpl
createMessage, fromRawByteArray, fromRawByteArrayNTCP2, getMessageExpiration, getMessageSize, getRawMessageSize, getUniqueId, readBytes, readBytes, readMessage, registerBuilder, setMessageExpiration, setUniqueId, toByteArray, toByteArray, toRawByteArray, toRawByteArrayNTCP2, writeBytes
-
Field Details
-
MESSAGE_TYPE
public static final int MESSAGE_TYPE- See Also:
- Constant Field Values
-
USE_ECIES_FF
public static final boolean USE_ECIES_FF- See Also:
- Constant Field Values
-
-
Constructor Details
-
DatabaseLookupMessage
-
DatabaseLookupMessage
- Parameters:
locallyCreated
- ignored
-
-
Method Details
-
getSearchKey
Defines the key being searched for -
setSearchKey
- Throws:
IllegalStateException
- if key previously set, to protect saved checksum
-
getSearchType
Defines the type of data being searched for. Default ANY.- Returns:
- non-null
- Since:
- 0.9.16
-
setSearchType
Defines the type of data being searched for. Default ANY. Must be ANY for queried routers 0.9.5 or lower, but there are few if any floodfills that old left, so not even worth checking.- Parameters:
type
- non-null- Since:
- 0.9.16
-
getFrom
Contains the router who requested this lookup -
setFrom
- Throws:
IllegalStateException
- if from previously set, to protect saved checksum
-
getReplyTunnel
Contains the tunnel ID a reply should be sent to -
setReplyTunnel
- Throws:
IllegalStateException
- if tunnel previously set, to protect saved checksum
-
supportsEncryptedReplies
Does this router support encrypted replies?- Parameters:
to
- null OK- Since:
- 0.9.7
-
supportsRatchetReplies
Does this router support ratchet replies?- Parameters:
to
- null OK- Since:
- 0.9.46
-
getReplyKey
The included session key or null if unset. If non-null, either getReplyTag() or getRatchetReplyTag() is non-null.- Since:
- 0.9.7
-
getReplyTag
The included session tag or null if unset- Since:
- 0.9.7
-
setReplySession
Only worthwhile if sending reply via tunnel- Parameters:
encryptKey
- non-nullencryptTag
- non-null- Throws:
IllegalStateException
- if key or tag previously set, to protect saved checksum- Since:
- 0.9.7
-
getRatchetReplyTag
The included session tag or null if unset- Since:
- 0.9.46
-
setReplySession
Ratchet- Parameters:
encryptKey
- non-nullencryptTag
- non-null- Throws:
IllegalStateException
- if key or tag previously set, to protect saved checksum- Since:
- 0.9.46
-
getRatchetPublicKey
The included session key or null if unset. Preliminary, not fully supported, see proposal 154.- Since:
- 0.9.46
-
setReplySession
Ratchet. Preliminary, not fully supported, see proposal 154.- Parameters:
pubKey
- non-null- Throws:
IllegalStateException
- if key or tag previously set, to protect saved checksum- Since:
- 0.9.46
-
getDontIncludePeers
Set of peers that a lookup reply should NOT include. WARNING - returns a copy.- Returns:
- Set of Hash objects, each of which is the H(routerIdentity) to skip, or null
-
setDontIncludePeers
Replace the dontInclude set with this set. WARNING - makes a copy. Invalidates the checksum.- Parameters:
peers
- may be null
-
addDontIncludePeer
Add to the set. Invalidates the checksum.- Parameters:
peer
- non-null- Since:
- 0.8.12
-
addDontIncludePeers
Add to the set. Invalidates the checksum.- Parameters:
peers
- non-null- Since:
- 0.8.12
-
readMessage
public void readMessage(byte[] data, int offset, int dataSize, int type) throws I2NPMessageExceptionDescription copied from interface:I2NPMessage
Read the body into the data structures, after the initial type byte and the uniqueId / expiration, using the current class's format as defined by the I2NP specification- Parameters:
data
- data to read fromoffset
- where to start in the data arraydataSize
- how long into the data to readtype
- I2NP message type- Throws:
I2NPMessageException
- if the stream doesn't contain a valid message that this class can read.
-
calculateWrittenLength
protected int calculateWrittenLength()Description copied from class:I2NPMessageImpl
calculate the message body's length (not including the header and footer- Specified by:
calculateWrittenLength
in classI2NPMessageImpl
-
writeMessageBody
Description copied from class:I2NPMessageImpl
write the message body to the output array, starting at the given index.- Specified by:
writeMessageBody
in classI2NPMessageImpl
- Returns:
- the index into the array after the last byte written (NOT the length)
- Throws:
I2NPMessageException
-
getType
public int getType()Description copied from interface:I2NPMessage
Return the unique identifier for this type of I2NP message, as defined in the I2NP spec -
hashCode
public int hashCode() -
equals
-
toString
-