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

Fields
`static int` `MESSAGE_TYPE`

### Constructor Summary

Constructors
Constructor and Description
`SendMessageExpiresMessage()`

### Method Summary

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