net.i2p.data

## Class DateAndFlags

- java.lang.Object
- - net.i2p.data.DataStructureImpl
  - - net.i2p.data.DateAndFlags

- All Implemented Interfaces:
    Serializable, DataStructure
  Direct Known Subclasses:
    SendMessageOptions

      public class DateAndFlags
      extends DataStructureImpl

  A six-byte Date and 2 bytes of flags, since a Date won't encroach on the top two bytes until the year 10889. The flag format is not specified here. The bits may be used in an application-specific manner. The application should be designed so that a flags value of 0 is the default, for compatibility with an 8-byte Date. See extending class net.i2p.client.SendMessageOptions for more info. If we really need some more bits we could use the first few bits of the third byte.
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected int` | `_flags`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DateAndFlags()`
    `DateAndFlags(Date date, int flags)`
    `DateAndFlags(long date, int flags)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `equals(Object object)`
    `void` | `fromByteArray(byte[] data)` Overridden for efficiency.
    `Date` | `getDate()` The Date object is created here, it is not cached.
    `int` | `getFlags()`
    `long` | `getTime()`
    `int` | `hashCode()`
    `void` | `readBytes(InputStream in)` Load up the current object with data from the given stream.
    `void` | `setDate(Date date)`
    `void` | `setDate(long date)`
    `void` | `setFlags(int flags)` Sets the flags value.
    `byte[]` | `toByteArray()` Overridden for efficiency.
    `String` | `toString()`
    `void` | `writeBytes(OutputStream out)` Write out the data structure to the stream, using the format defined in the I2P data structure specification.

    - ### Methods inherited from class net.i2p.data.DataStructureImpl

      `calculateHash, fromBase64, read, toBase64`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### _flags

          protected int _flags

  - ### Constructor Detail

    - #### DateAndFlags

          public DateAndFlags()

    - #### DateAndFlags

          public DateAndFlags(Date date,
                              int flags)

      Parameters:
        `flags` - 0 - 65535

    - #### DateAndFlags

          public DateAndFlags(long date,
                              int flags)

      Parameters:
        `flags` - 0 - 65535

  - ### Method Detail

    - #### equals

          public boolean equals(Object object)

      Overrides:
        `equals` in class `Object`

    - #### fromByteArray

          public void fromByteArray(byte[] data)
                             throws DataFormatException

      Overridden for efficiency.
      Specified by:
        `fromByteArray` in interface `DataStructure`
      Overrides:
        `fromByteArray` in class `DataStructureImpl`
      Parameters:
        `data` - non-null
      Throws:
        `DataFormatException` - if null or wrong length

    - #### getDate

          public Date getDate()

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

    - #### getFlags

          public int getFlags()

    - #### getTime

          public long getTime()

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `Object`

    - #### readBytes

          public void readBytes(InputStream in)
                         throws DataFormatException,
                                IOException

      Description copied from interface: `DataStructure`
      Load up the current object with data from the given stream. Data loaded this way must match the I2P data structure specification. Warning - many classes will throw IllegalStateException if data is already set.
      Parameters:
        `in` - stream to read from
      Throws:
        `DataFormatException` - if the data is improperly formatted
        `IOException` - if there was a problem reading the stream

    - #### setDate

          public void setDate(Date date)

    - #### setDate

          public void setDate(long date)

    - #### setFlags

          public void setFlags(int flags)

      Sets the flags value.
      Parameters:
        `flags` - 0 - 65535

    - #### toByteArray

          public byte[] toByteArray()

      Overridden for efficiency.
      Specified by:
        `toByteArray` in interface `DataStructure`
      Overrides:
        `toByteArray` in class `DataStructureImpl`
      Returns:
        may be null if data is not set

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### writeBytes

          public void writeBytes(OutputStream out)
                          throws DataFormatException,
                                 IOException

      Description copied from interface: `DataStructure`
      Write out the data structure to the stream, using the format defined in the I2P data structure specification.
      Parameters:
        `out` - stream to write to
      Throws:
        `DataFormatException` - if the data was incomplete or not yet ready to be written
        `IOException` - if there was a problem writing to the stream