## net.i2p.data.i2cp
Class SendMessageMessage

    java.lang.Object
      net.i2p.data.DataStructureImpl
          net.i2p.data.i2cp.I2CPMessageImpl
              net.i2p.data.i2cp.SendMessageMessage

All Implemented Interfaces:
  DataStructure, I2CPMessage

    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`
  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:
    `I2CPMessageException` - if the stream doesn't contain a valid message that this class can read.
    `java.io.IOException` - if there is a problem reading from the stream

### 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`
  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`
  Throws:
    `I2CPMessageException` - if the current object doesn't have sufficient data to write a properly formatted message.
    `java.io.IOException` - if there is a problem writing to the stream

### 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

### 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`