## net.i2p.data
Interface DataStructure

All Known Subinterfaces:
  I2CPMessage, I2NPMessage

All Known Implementing Classes:
  AbuseReason, AbuseSeverity, Address, BandwidthLimitsMessage, Certificate, CreateLeaseSetMessage, CreateSessionMessage, DatabaseEntry, DatabaseLookupMessage, DatabaseSearchReplyMessage, DatabaseStoreMessage, DataMessage, DataStructureImpl, DateAndFlags, DeliveryInstructions, DeliveryStatusMessage, Destination, DestLookupMessage, DestReplyMessage, DestroySessionMessage, DisconnectMessage, GarlicClove, GarlicMessage, GetBandwidthLimitsMessage, GetDateMessage, Hash, I2CPMessageImpl, I2NPMessageImpl, KeysAndCert, Lease, LeaseSet, LeaseSetKeys, LocalHash, MessageId, MessagePayloadMessage, MessageStatusMessage, Payload, PoisonI2CPMessage, PrivateKey, PublicKey, ReceiveMessageBeginMessage, ReceiveMessageEndMessage, ReconfigureSessionMessage, ReportAbuseMessage, RequestLeaseSetMessage, RouterAddress, RouterIdentity, RouterInfo, SendMessageExpiresMessage, SendMessageMessage, SessionConfig, SessionId, SessionKey, SessionStatusMessage, SessionTag, SetDateMessage, SHA1Hash, Signature, SigningPrivateKey, SigningPublicKey, SimpleDataStructure, TunnelBuildMessage, TunnelBuildReplyMessage, TunnelDataMessage, TunnelGatewayMessage, TunnelId, UnknownI2NPMessage, VariableTunnelBuildMessage, VariableTunnelBuildReplyMessage, VerifiedDestination

    public interface DataStructure

Defines the class as a standard object with particular bit representation, exposing methods to read and write that representation.

Author:
  jrandom

Method Summary
`Hash` `calculateHash()` Calculate the SHA256 value of this object (useful for a few scenarios)
`void` `fromBase64(String data)` Load the structure from the base 64 encoded data provided
`void` `fromByteArray(byte[] data)`
`void` `readBytes(InputStream in)` Load up the current object with data from the given stream.
`String` `toBase64()` render the structure into modified base 64 notation
`byte[]` `toByteArray()`
`void` `writeBytes(OutputStream out)` Write out the data structure to the stream, using the format defined in the I2P data structure specification.

Method Detail

### readBytes

    void readBytes(InputStream in)
                   throws DataFormatException,
                          IOException

  Load up the current object with data from the given stream. Data loaded this way must match the I2P data structure specification.

  Parameters:
    `in` - stream to read from
  Throws:
    `DataFormatException` - if the data is improperly formatted
    `IOException` - if there was a problem reading the stream

### writeBytes

    void writeBytes(OutputStream out)
                    throws DataFormatException,
                           IOException

  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

### toBase64

    String toBase64()

  render the structure into modified base 64 notation

  Returns:
    null on error

### fromBase64

    void fromBase64(String data)
                    throws DataFormatException

  Load the structure from the base 64 encoded data provided

  Throws:
    `DataFormatException`

### toByteArray

    byte[] toByteArray()

### fromByteArray

    void fromByteArray(byte[] data)
                       throws DataFormatException

  Throws:
    `DataFormatException`

### calculateHash

    Hash calculateHash()

  Calculate the SHA256 value of this object (useful for a few scenarios)

  Returns:
    SHA256 hash, or null if there were problems (data format or io errors)