Package net.i2p.data.i2np
Class TunnelDataMessage
- java.lang.Object
-
- net.i2p.data.i2np.I2NPMessageImpl
-
- net.i2p.data.i2np.FastI2NPMessageImpl
-
- net.i2p.data.i2np.TunnelDataMessage
-
- All Implemented Interfaces:
I2NPMessage
public class TunnelDataMessage extends FastI2NPMessageImpl
Defines the message sent between routers as part of the tunnel delivery The tunnel ID is changed in-place by TunnelParticipant.send(), so we can't reuse the checksum on output, but we still subclass FastI2NPMessageImpl so we don't verify the checksum on input... because this is a high-usage class.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class net.i2p.data.i2np.I2NPMessageImpl
I2NPMessageImpl.Builder
-
-
Field Summary
Fields Modifier and Type Field Description static int
DATA_SIZE
static int
MESSAGE_TYPE
-
Fields inherited from class net.i2p.data.i2np.FastI2NPMessageImpl
_checksum, _hasChecksum
-
Fields inherited from class net.i2p.data.i2np.I2NPMessageImpl
_context, _expiration, _log, CHECKSUM_LENGTH, DEFAULT_EXPIRATION_MS, HEADER_LENGTH
-
Fields inherited from interface net.i2p.data.i2np.I2NPMessage
MAX_ID_VALUE, MAX_SIZE
-
-
Constructor Summary
Constructors Constructor Description TunnelDataMessage(I2PAppContext context)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected int
calculateWrittenLength()
calculate the message body's length (not including the header and footerboolean
equals(Object object)
byte[]
getData()
long
getTunnelId()
TunnelId
getTunnelIdObj()
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
setData(byte[] data)
void
setTunnelId(long id)
(correctly) Invalidates stored checksumvoid
setTunnelId(TunnelId id)
(correctly) Invalidates stored checksumbyte[]
toByteArray()
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, toRawByteArray, toRawByteArrayNTCP2, writeBytes
-
-
-
-
Field Detail
-
MESSAGE_TYPE
public static final int MESSAGE_TYPE
- See Also:
- Constant Field Values
-
DATA_SIZE
public static final int DATA_SIZE
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
TunnelDataMessage
public TunnelDataMessage(I2PAppContext context)
-
-
Method Detail
-
getTunnelId
public long getTunnelId()
-
setTunnelId
public void setTunnelId(long id)
(correctly) Invalidates stored checksum
-
getTunnelIdObj
public TunnelId getTunnelIdObj()
-
setTunnelId
public void setTunnelId(TunnelId id)
(correctly) Invalidates stored checksum
-
getData
public byte[] getData()
-
setData
public void setData(byte[] data)
- Throws:
IllegalStateException
- if data previously set, to protect saved checksum
-
readMessage
public void readMessage(byte[] data, int offset, int dataSize, int type) throws I2NPMessageException
Description 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()
calculate the message body's length (not including the header and footer- Specified by:
calculateWrittenLength
in classI2NPMessageImpl
-
writeMessageBody
protected int writeMessageBody(byte[] out, int curIndex) throws I2NPMessageException
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
-
toByteArray
public byte[] toByteArray()
- Specified by:
toByteArray
in interfaceI2NPMessage
- Overrides:
toByteArray
in classI2NPMessageImpl
-
-