## Uses of Interface
net.i2p.data.DataStructure

Packages that use DataStructure
net.i2p.data: These classes define the common data structures used by the various I2P protocols.
net.i2p.data.i2cp: The Invisible Internet Client Protocol (I2CP) allows applications simplified access to the I2P network without requiring them to deal with the issues involved with the Invisible Internet Network Protocol (I2NP).
net.i2p.data.i2np: The Invisible Internet Network Protocol (I2NP) is only a part of how an application can send messages over the network.
net.i2p.router
net.i2p.router.networkdb.kademlia

Uses of DataStructure in net.i2p.data

Classes in net.i2p.data that implement DataStructure
`class` `Address`
`class` `Certificate` Defines a certificate that can be attached to various I2P structures, such as RouterIdentity and Destination, allowing routers and clients to help manage denial of service attacks and the network utilization.
`class` `DataStructureImpl` Base implementation of all data structures
`class` `Destination` Defines an end point in the I2P network.
`class` `Hash` Defines the hash as defined by the I2P data structure spec.
`class` `Lease` Defines the proof that a particular router / tunnel is allowed to receive messages for a particular Destination during some period of time.
`class` `LeaseSet` Defines the set of leases a destination currently has.
`class` `Payload` Defines the actual payload of a message being delivered, including the standard encryption wrapping, as defined by the I2P data structure spec.
`class` `PrivateKey` Defines the PrivateKey as defined by the I2P data structure spec.
`class` `PublicKey` Defines the PublicKey as defined by the I2P data structure spec.
`class` `RouterAddress` Defines a method of communicating with a router
`class` `RouterIdentity` Defines the unique identifier of a router, including any certificate or public key.
`class` `RouterInfo` Defines the data that a router either publishes to the global routing table or provides to trusted peers.
`class` `SessionKey` Defines the SessionKey as defined by the I2P data structure spec.
`class` `Signature` Defines the signature as defined by the I2P data structure spec.
`class` `SigningPrivateKey` Defines the SigningPrivateKey as defined by the I2P data structure spec.
`class` `SigningPublicKey` Defines the SigningPublicKey as defined by the I2P data structure spec.
`class` `TunnelId` Defines the tunnel ID that messages are passed through on a set of routers.
`class` `VerifiedDestination` Extend Destination with methods to verify its Certificate.

Methods in net.i2p.data that return types with arguments of type DataStructure
`static java.util.List<? extends DataStructure>` `DataHelper.sortStructures(java.util.Collection<? extends DataStructure> dataStructures)` Sort based on the Hash of the DataStructure Warning - relatively slow.

Method parameters in net.i2p.data with type arguments of type DataStructure
`static java.util.List<? extends DataStructure>` `DataHelper.sortStructures(java.util.Collection<? extends DataStructure> dataStructures)` Sort based on the Hash of the DataStructure Warning - relatively slow.

Uses of DataStructure in net.i2p.data.i2cp

Subinterfaces of DataStructure in net.i2p.data.i2cp
`interface` `I2CPMessage` Defines the base functionality of API messages

Classes in net.i2p.data.i2cp that implement DataStructure
`class` `AbuseReason` Defines the structure for why abuse was reported either by the client to the router or by the router to the client
`class` `AbuseSeverity` Provides a severity level (larger numbers are more severe) in association with a client reporting abusive behavior to the router or the router reporting it to the client
`class` `BandwidthLimitsMessage` Tell the other side the limits
`class` `CreateLeaseSetMessage` Defines the message a client sends to a router when authorizing the LeaseSet
`class` `CreateSessionMessage` Defines the message a client sends to a router when establishing a new session.
`class` `DestLookupMessage` Request the router look up the dest for a hash
`class` `DestReplyMessage` Response to DestLookupMessage
`class` `DestroySessionMessage` Defines the message a client sends to a router when destroying existing session.
`class` `DisconnectMessage` Defines the message a client sends to a router when destroying existing session.
`class` `GetBandwidthLimitsMessage` Request the router tells us the current bw limits
`class` `GetDateMessage` Request the other side to send us what they think the current time is
`class` `I2CPMessageImpl` Defines the base message implementation.
`class` `MessageId` Defines the message ID of a message delivered between a router and a client in a particular session.
`class` `MessagePayloadMessage` Defines the payload message a router sends to the client
`class` `MessageStatusMessage` Defines the message a client sends to a router when destroying existing session.
`class` `ReceiveMessageBeginMessage` Defines the message a client sends to a router when asking the router to start sending a message to it.
`class` `ReceiveMessageEndMessage` Defines the message a client sends to a router when asking the router to start sending a message to it.
`class` `ReconfigureSessionMessage` Defines the message a client sends to a router when updating the config on an existing session.
`class` `ReportAbuseMessage` Defines the message a client sends to a router when asking the router what its address visibility is
`class` `RequestLeaseSetMessage` Defines the message a client sends to a router when destroying existing session.
`class` `SendMessageExpiresMessage` Same as SendMessageMessage, but with an expiration to be passed to the router
`class` `SendMessageMessage` Defines the message a client sends to a router to ask it to deliver a new message
`class` `SessionConfig` Defines the information a client must provide to create a session
`class` `SessionId` Defines the token passed between the router and client to associate messages with a particular session.
`class` `SessionStatusMessage` Defines the message a client sends to a router when destroying existing session.
`class` `SetDateMessage` Tell the other side what time it is

Uses of DataStructure in net.i2p.data.i2np

Subinterfaces of DataStructure in net.i2p.data.i2np
`interface` `I2NPMessage` Base interface for all I2NP messages

Classes in net.i2p.data.i2np that implement DataStructure
`class` `DatabaseLookupMessage` Defines the message a router sends to another router to search for a key in the network database.
`class` `DatabaseSearchReplyMessage` Defines the message a router sends to another router in response to a search (DatabaseFindNearest or DatabaseLookup) when it doesn't have the value, specifying what routers it would search.
`class` `DatabaseStoreMessage` Defines the message a router sends to another router to test the network database reachability, as well as the reply message sent back.
`class` `DataMessage` Defines a message containing arbitrary bytes of data
`class` `DeliveryInstructions` Contains the delivery instructions
`class` `DeliveryStatusMessage` Defines the message sent back in reply to a message when requested, containing the private ack id.
`class` `GarlicClove` Contains one deliverable message encrypted to a router along with instructions and a certificate 'paying for' the delivery.
`class` `GarlicMessage` Defines the wrapped garlic message
`class` `I2NPMessageImpl` Defines the base message implementation.
`class` `TunnelBuildMessage`
`class` `TunnelBuildReplyMessage` Transmitted from the new outbound endpoint to the creator through a reply tunnel
`class` `TunnelDataMessage` Defines the message sent between routers as part of the tunnel delivery
`class` `TunnelGatewayMessage` Defines the message sent between one tunnel's endpoint and another's gateway.
`class` `UnknownI2NPMessage` This is the same as DataMessage but with a variable message type.
`class` `VariableTunnelBuildMessage`
`class` `VariableTunnelBuildReplyMessage` Transmitted from the new outbound endpoint to the creator through a reply tunnel

Uses of DataStructure in net.i2p.router

Classes in net.i2p.router that implement DataStructure
`class` `LeaseSetKeys` Wrap up the keys given to the router when a destination connects to it

Uses of DataStructure in net.i2p.router.networkdb.kademlia

Classes in net.i2p.router.networkdb.kademlia that implement DataStructure
`(package private) class` `LocalHash` Pull the caching used only by KBucketImpl out of Hash and put it here.

Methods in net.i2p.router.networkdb.kademlia that return DataStructure
`DataStructure` `DataStore.get(Hash key)`
`DataStructure` `TransientDataStore.get(Hash key)`
`DataStructure` `PersistentDataStore.get(Hash key)`
`DataStructure` `DataStore.get(Hash key, boolean persist)`
`DataStructure` `TransientDataStore.get(Hash key, boolean persist)` for PersistentDataStore only - don't use here @throws IAE always
`DataStructure` `PersistentDataStore.get(Hash key, boolean persist)` Prepare for having only a partial set in memory and the rest on disk
`DataStructure` `StoreState.getData()`
`DataStructure` `DataStore.remove(Hash key)`
`DataStructure` `TransientDataStore.remove(Hash key)`
`DataStructure` `PersistentDataStore.remove(Hash key)`
`DataStructure` `DataStore.remove(Hash key, boolean persist)`
`DataStructure` `TransientDataStore.remove(Hash key, boolean persist)` for PersistentDataStore only - don't use here
`DataStructure` `PersistentDataStore.remove(Hash key, boolean persist)`

Methods in net.i2p.router.networkdb.kademlia with parameters of type DataStructure
`void` `FloodfillNetworkDatabaseFacade.flood(DataStructure ds)` Send to a subset of all floodfill peers.
`boolean` `DataStore.put(Hash key, DataStructure data)`
`boolean` `TransientDataStore.put(Hash key, DataStructure data)`
`boolean` `PersistentDataStore.put(Hash key, DataStructure data)`
`boolean` `DataStore.put(Hash key, DataStructure data, boolean persist)`
`boolean` `TransientDataStore.put(Hash key, DataStructure data, boolean persist)` for PersistentDataStore only - don't use here @throws IAE always
`boolean` `PersistentDataStore.put(Hash key, DataStructure data, boolean persist)`
`void` `FloodfillNetworkDatabaseFacade.sendStore(Hash key, DataStructure ds, Job onSuccess, Job onFailure, long sendTimeout, java.util.Set toIgnore)`
`void` `KademliaNetworkDatabaseFacade.sendStore(Hash key, DataStructure ds, Job onSuccess, Job onFailure, long sendTimeout, java.util.Set toIgnore)` unused (overridden in FNDF)

Constructors in net.i2p.router.networkdb.kademlia with parameters of type DataStructure
`FloodfillStoreJob(RouterContext context, FloodfillNetworkDatabaseFacade facade, Hash key, DataStructure data, Job onSuccess, Job onFailure, long timeoutMs)` Send a data structure to the floodfills
`FloodfillStoreJob(RouterContext context, FloodfillNetworkDatabaseFacade facade, Hash key, DataStructure data, Job onSuccess, Job onFailure, long timeoutMs, java.util.Set<Hash> toSkip)`
`StoreJob(RouterContext context, KademliaNetworkDatabaseFacade facade, Hash key, DataStructure data, Job onSuccess, Job onFailure, long timeoutMs)` Send a data structure to the floodfills
`StoreJob(RouterContext context, KademliaNetworkDatabaseFacade facade, Hash key, DataStructure data, Job onSuccess, Job onFailure, long timeoutMs, java.util.Set<Hash> toSkip)`
`StoreState(RouterContext ctx, Hash key, DataStructure data)`
`StoreState(RouterContext ctx, Hash key, DataStructure data, java.util.Set<Hash> toSkip)`