Package net.i2p.data.i2cp
Class SendMessageMessage
java.lang.Object
net.i2p.data.i2cp.I2CPMessageImpl
net.i2p.data.i2cp.SendMessageMessage
- All Implemented Interfaces:
I2CPMessage
- Direct Known Subclasses:
SendMessageExpiresMessage
public class SendMessageMessage extends I2CPMessageImpl
Defines the message a client sends to a router to ask it to deliver
a new message
- Author:
- jrandom
-
Field Summary
Fields Modifier and Type Field Description protected Destination
_destination
protected long
_nonce
protected Payload
_payload
protected SessionId
_sessionId
static int
MESSAGE_TYPE
-
Constructor Summary
Constructors Constructor Description SendMessageMessage()
-
Method Summary
Modifier and Type Method Description protected void
doReadMessage(InputStream in, int size)
Read in the payload part of the message (after the initial 4 byte size and 1 byte type)protected byte[]
doWriteMessage()
Write out the payload part of the message (not including the 4 byte size and 1 byte type)Destination
getDestination()
long
getNonce()
Payload
getPayload()
SessionId
getSessionId()
int
getType()
Return the unique identifier for this type of message, as specified in the network specification document under #ClientAccessLayerMessagesvoid
readMessage(InputStream in, int length, int type)
Read the body into the data structuresSessionId
sessionId()
Return the SessionId for this message.void
setDestination(Destination destination)
void
setNonce(long nonce)
void
setPayload(Payload payload)
void
setSessionId(SessionId id)
String
toString()
void
writeMessage(OutputStream out)
Write out the full message to the stream, including the 4 byte size and 1 byte type header.
-
Field Details
-
MESSAGE_TYPE
public static final int MESSAGE_TYPE- See Also:
- Constant Field Values
-
_sessionId
-
_destination
-
_payload
-
_nonce
protected long _nonce
-
-
Constructor Details
-
SendMessageMessage
public SendMessageMessage()
-
-
Method Details
-
getSessionId
-
sessionId
Return the SessionId for this message.- Specified by:
sessionId
in interfaceI2CPMessage
- Overrides:
sessionId
in classI2CPMessageImpl
- Returns:
- null always. Extending classes with a SessionId must override.
- Since:
- 0.9.21
-
setSessionId
-
getDestination
-
setDestination
-
getPayload
-
setPayload
-
getNonce
public long getNonce()- Returns:
- 0 to 0xffffffff
-
setNonce
public void setNonce(long nonce)- Parameters:
nonce
- 0 to 0xffffffff
-
doReadMessage
Description copied from class:I2CPMessageImpl
Read in the payload part of the message (after the initial 4 byte size and 1 byte type)- Specified by:
doReadMessage
in classI2CPMessageImpl
- Parameters:
in
- InputStreamsize
- payload size- Throws:
I2CPMessageException
IOException
-
readMessage
public void readMessage(InputStream in, int length, int type) throws I2CPMessageException, IOExceptionRead the body into the data structures- Specified by:
readMessage
in interfaceI2CPMessage
- Overrides:
readMessage
in classI2CPMessageImpl
- Parameters:
in
- stream to read fromlength
- number of bytes in the message payloadtype
- type of message (should equal getType())- Throws:
IOException
I2CPMessageException
- if the stream doesn't contain a valid message that this class can read.
-
doWriteMessage
Description copied from class:I2CPMessageImpl
Write out the payload part of the message (not including the 4 byte size and 1 byte type)- Specified by:
doWriteMessage
in classI2CPMessageImpl
- Returns:
- byte array
- Throws:
UnsupportedOperationException
- alwaysI2CPMessageException
IOException
-
writeMessage
Write out the full message to the stream, including the 4 byte size and 1 byte type header. Override the parent so we can be more mem efficient- Specified by:
writeMessage
in interfaceI2CPMessage
- Overrides:
writeMessage
in classI2CPMessageImpl
- Parameters:
out
- OutputStream- Throws:
IOException
I2CPMessageException
- if the current object doesn't have sufficient data to write a properly formatted message.
-
getType
public int getType()Description copied from interface:I2CPMessage
Return the unique identifier for this type of message, as specified in the network specification document under #ClientAccessLayerMessages- Returns:
- unique identifier for this type of message
-
toString
-