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 classDatabaseLookupMessage.TypeNested classes/interfaces inherited from class net.i2p.data.i2np.I2NPMessageImpl
I2NPMessageImpl.Builder -
Field Summary
Fields Modifier and Type Field Description static intMESSAGE_TYPEstatic booleanUSE_ECIES_FFFields 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 voidaddDontIncludePeer(Hash peer)Add to the set.voidaddDontIncludePeers(Collection<Hash> peers)Add to the set.protected intcalculateWrittenLength()calculate the message body's length (not including the header and footerbooleanequals(Object object)Set<Hash>getDontIncludePeers()Set of peers that a lookup reply should NOT include.HashgetFrom()Contains the router who requested this lookupPublicKeygetRatchetPublicKey()The included session key or null if unset.RatchetSessionTaggetRatchetReplyTag()The included session tag or null if unsetSessionKeygetReplyKey()The included session key or null if unset.SessionTaggetReplyTag()The included session tag or null if unsetTunnelIdgetReplyTunnel()Contains the tunnel ID a reply should be sent toHashgetSearchKey()Defines the key being searched forDatabaseLookupMessage.TypegetSearchType()Defines the type of data being searched for.intgetType()Return the unique identifier for this type of I2NP message, as defined in the I2NP specinthashCode()voidreadMessage(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 specificationvoidsetDontIncludePeers(Collection<Hash> peers)Replace the dontInclude set with this set.voidsetFrom(Hash from)voidsetReplySession(PublicKey pubKey)Ratchet.voidsetReplySession(SessionKey encryptKey, SessionTag encryptTag)Only worthwhile if sending reply via tunnelvoidsetReplySession(SessionKey encryptKey, RatchetSessionTag encryptTag)RatchetvoidsetReplyTunnel(TunnelId replyTunnel)voidsetSearchKey(Hash key)voidsetSearchType(DatabaseLookupMessage.Type type)Defines the type of data being searched for.static booleansupportsEncryptedReplies(RouterInfo to)Does this router support encrypted replies?static booleansupportsRatchetReplies(RouterInfo to)Does this router support ratchet replies?StringtoString()protected intwriteMessageBody(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, toByteArrayWithSavedChecksumMethods 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:I2NPMessageRead 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:I2NPMessageImplcalculate the message body's length (not including the header and footer- Specified by:
calculateWrittenLengthin classI2NPMessageImpl
-
writeMessageBody
Description copied from class:I2NPMessageImplwrite the message body to the output array, starting at the given index.- Specified by:
writeMessageBodyin 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:I2NPMessageReturn the unique identifier for this type of I2NP message, as defined in the I2NP spec -
hashCode
public int hashCode() -
equals
-
toString
-