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

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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)