net.i2p.data.i2cp
Class SendMessageMessage

java.lang.Object
  extended by net.i2p.data.DataStructureImpl
      extended by net.i2p.data.i2cp.I2CPMessageImpl
          extended by net.i2p.data.i2cp.SendMessageMessage
All Implemented Interfaces:
DataStructure, 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
static int MESSAGE_TYPE
           
 
Constructor Summary
SendMessageMessage()
           
 
Method Summary
protected  void doReadMessage(java.io.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)
 boolean equals(java.lang.Object object)
           
 Destination getDestination()
           
 long getNonce()
           
 Payload getPayload()
           
 SessionId getSessionId()
           
 int getType()
          Return the unique identifier for this type of APIMessage, as specified in the network specification document under #ClientAccessLayerMessages
 void readMessage(java.io.InputStream in, int length, int type)
          Read the body into the data structures
 void setDestination(Destination destination)
           
 void setNonce(long nonce)
           
 void setPayload(Payload payload)
           
 void setSessionId(SessionId id)
           
 java.lang.String toString()
           
 void writeMessage(java.io.OutputStream out)
          Write out the full message to the stream, including the 4 byte size and 1 byte type header.
 
Methods inherited from class net.i2p.data.i2cp.I2CPMessageImpl
readBytes, readMessage, writeBytes
 
Methods inherited from class net.i2p.data.DataStructureImpl
calculateHash, fromBase64, fromByteArray, read, toBase64, toByteArray
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface net.i2p.data.DataStructure
calculateHash, fromBase64, fromByteArray, toBase64, toByteArray
 

Field Detail

MESSAGE_TYPE

public static final int MESSAGE_TYPE
See Also:
Constant Field Values
Constructor Detail

SendMessageMessage

public SendMessageMessage()
Method Detail

getSessionId

public SessionId getSessionId()

setSessionId

public void setSessionId(SessionId id)

getDestination

public Destination getDestination()

setDestination

public void setDestination(Destination destination)

getPayload

public Payload getPayload()

setPayload

public void setPayload(Payload payload)

getNonce

public long getNonce()

setNonce

public void setNonce(long nonce)

doReadMessage

protected void doReadMessage(java.io.InputStream in,
                             int size)
                      throws I2CPMessageException,
                             java.io.IOException
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 class I2CPMessageImpl
Parameters:
in - InputStream
size - payload size
Throws:
I2CPMessageException
java.io.IOException

readMessage

public void readMessage(java.io.InputStream in,
                        int length,
                        int type)
                 throws I2CPMessageException,
                        java.io.IOException
Read the body into the data structures

Specified by:
readMessage in interface I2CPMessage
Overrides:
readMessage in class I2CPMessageImpl
Parameters:
in - stream to read from
length - number of bytes in the message payload
type - type of message (should equal getType())
Throws:
java.io.IOException
I2CPMessageException - if the stream doesn't contain a valid message that this class can read.

doWriteMessage

protected byte[] doWriteMessage()
                         throws I2CPMessageException,
                                java.io.IOException
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 class I2CPMessageImpl
Returns:
byte array
Throws:
I2CPMessageException
java.io.IOException

writeMessage

public void writeMessage(java.io.OutputStream out)
                  throws I2CPMessageException,
                         java.io.IOException
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 interface I2CPMessage
Overrides:
writeMessage in class I2CPMessageImpl
Parameters:
out - OutputStream
Throws:
java.io.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 APIMessage, as specified in the network specification document under #ClientAccessLayerMessages

Returns:
unique identifier for this type of APIMessage

equals

public boolean equals(java.lang.Object object)
Overrides:
equals in class java.lang.Object

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object