## net.i2p.data.i2cp
Class SendMessageExpiresMessage

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

All Implemented Interfaces:
  DataStructure, I2CPMessage

    public class SendMessageExpiresMessage

extends SendMessageMessage

Same as SendMessageMessage, but with an expiration to be passed to the router As of 0.8.4, retrofitted to use DateAndFlags. Backwards compatible.

Author:
  zzz

Field Summary
`static int` `MESSAGE_TYPE`

Constructor Summary
`SendMessageExpiresMessage()`

Method Summary
`boolean` `equals(Object object)`
`Date` `getExpiration()` The Date object is created here, it is not cached.
`long` `getExpirationTime()` Use this instead of getExpiration().getTime()
`int` `getFlags()`
`int` `getType()` Return the unique identifier for this type of APIMessage, as specified in the network specification document under #ClientAccessLayerMessages
`void` `readMessage(InputStream in, int length, int type)` Read the body into the data structures
`void` `setExpiration(Date d)`
`void` `setExpiration(long d)`
`void` `setFlags(int f)`
`String` `toString()`
`void` `writeMessage(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.SendMessageMessage
`doReadMessage, doWriteMessage, getDestination, getNonce, getPayload, getSessionId, setDestination, setNonce, setPayload, setSessionId`

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

### SendMessageExpiresMessage

    public SendMessageExpiresMessage()

Method Detail

### getExpiration

    public Date getExpiration()

  The Date object is created here, it is not cached. Use getExpirationTime() if you only need the long value.

### getExpirationTime

    public long getExpirationTime()

  Use this instead of getExpiration().getTime()

  Since:
    0.8.4

### setExpiration

    public void setExpiration(Date d)

### setExpiration

    public void setExpiration(long d)

  Since:
    0.8.4

### getFlags

    public int getFlags()

  Since:
    0.8.4

### setFlags

    public void setFlags(int f)

  Since:
    0.8.4

### readMessage

    public void readMessage(InputStream in,
                            int length,
                            int type)
                     throws I2CPMessageException,
                            IOException

  Read the body into the data structures

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

### writeMessage

    public void writeMessage(OutputStream out)
                      throws I2CPMessageException,
                             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 `SendMessageMessage`
  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 APIMessage, as specified in the network specification document under #ClientAccessLayerMessages

  Specified by:
    `getType` in interface `I2CPMessage`
  Overrides:
    `getType` in class `SendMessageMessage`
  Returns:
    unique identifier for this type of APIMessage

### equals

    public boolean equals(Object object)

  Overrides:
    `equals` in class `SendMessageMessage`

### toString

    public String toString()

  Overrides:
    `toString` in class `SendMessageMessage`