java.lang.Object
net.i2p.data.DataStructureImpl
net.i2p.data.DateAndFlags
- All Implemented Interfaces:
Serializable, DataStructure
- Direct Known Subclasses:
SendMessageOptions
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:
Field Summary
Constructor Summary
ConstructorsConstructorDescriptionCreate an empty date and zeroed flags; callers must call readDate() or set the fields before writing.DateAndFlags(long date, int flags) Date in milliseconds since epoch.DateAndFlags(Date date, int flags) Stores the date as milliseconds since the epoch.Method Summary
All MethodsModifier and TypeMethodDescriptionbooleanvoidfromByteArray(byte[] data) Overridden for efficiency.getDate()The Date object is created here, it is not cached.intgetFlags()0 - 65535.longgetTime()Date in milliseconds since epoch.inthashCode()voidreadBytes(InputStream in) Load up the current object with data from the given stream.voidsetDate(long date) Set the date from a long timestamp.voidSet the date from a Date object.voidsetFlags(int flags) Replace the 16-bit flags field.byte[]Overridden for efficiency.toString()voidwriteBytes(OutputStream out) Write out the data structure to the stream, using the format defined in the I2P data structure specification.Methods inherited from class DataStructureImpl
calculateHash, fromBase64, read, toBase64Modifier and TypeMethodDescriptionCalculate the SHA256 value of this object (useful for a few scenarios).voidfromBase64(String data) Load the structure from the provided base64 string.protected intread(InputStream in, byte[] target) Repeated reads until buffer is full or IOException is thrown.toBase64()Render the structure into modified base 64 notation.
Field Details
_flags
protected int _flagsApplication-specific flags (bottom 16 bits)._date
private long _dateDate in milliseconds since epoch.
Constructor Details
DateAndFlags
public DateAndFlags()Create an empty date and zeroed flags; callers must call readDate() or set the fields before writing.DateAndFlags
public DateAndFlags(long date, int flags) Date in milliseconds since epoch.- Parameters:
date- the date in milliseconds since epochflags- 0 - 65535
DateAndFlags
Stores the date as milliseconds since the epoch.- Parameters:
date- the date, truncated to the six wire bytes by writeDate()flags- 0 - 65535
Method Details
getFlags
public int getFlags()0 - 65535.- Returns:
- 0 - 65535
setFlags
public void setFlags(int flags) Replace the 16-bit flags field.- Parameters:
flags- 0 - 65535
getDate
getTime
public long getTime()Date in milliseconds since epoch.- Returns:
- the date in milliseconds since epoch
setDate
public void setDate(long date) Set the date from a long timestamp.- Parameters:
date- the date in milliseconds since epoch
setDate
Set the date from a Date object.- Parameters:
date- the Date to take the milliseconds from
readBytes
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 formattedIOException- if there was a problem reading the stream
writeBytes
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 writtenIOException- if there was a problem writing to the stream
toByteArray
public byte[] toByteArray()Overridden for efficiency.- Specified by:
toByteArrayin interfaceDataStructure- Overrides:
toByteArrayin classDataStructureImpl- Returns:
- may be null if data is not set
fromByteArray
Overridden for efficiency.- Specified by:
fromByteArrayin interfaceDataStructure- Overrides:
fromByteArrayin classDataStructureImpl- Parameters:
data- non-null- Throws:
DataFormatException- if null or wrong length
equals
hashCode
toString