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

Packages that use DataStructure
net.i2p.data
net.i2p.data.i2cp
net.i2p.data.i2np
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.

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` `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` `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` `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 message a client sends to a router to ask it to deliver a new message
`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` `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` `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` `DateMessage` Contains the sending router's current time, to sync (and verify sync)
`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` `EndPointPrivateKey` Contains the private key which matches the EndPointPublicKey which, in turn, is published on the LeaseSet and used to encrypt messages to the router to which a Destination is currently connected.
`class` `EndPointPublicKey` Contains the public key which matches the EndPointPrivateKey.
`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` `TunnelCreateMessage` Defines the message sent to a router to request that it participate in a tunnel using the included configuration settings.
`class` `TunnelCreateStatusMessage` Defines the message a router sends to another router in reply to a TunnelCreateMessage
`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` `TunnelSessionKey` Contains the session key used by the tunnel gateway to encrypt the DeliveryInstructions and used by the tunnel end point to decrypt those instructions.
`class` `TunnelSigningPrivateKey` Contains the private key which constructs a signature for the TunnelMessage which every participant in a tunnel uses to verify the TunnelVerificationStructure with.
`class` `TunnelSigningPublicKey` Contains the public key which every participant in a tunnel uses to verify the TunnelVerificationStructure for TunnelMessages that pass by.
`class` `TunnelVerificationStructure`

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
`(package private) class` `SSUDemo.FooMessage` Just carry some data...
`class` `TunnelSettings` Wrap up the settings specified for a particular tunnel

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

Methods in net.i2p.router.networkdb.kademlia that return DataStructure
`DataStructure` `TransientDataStore.get(Hash key)`
`DataStructure` `DataStore.get(Hash key)`
`DataStructure` `StoreState.getData()`
`DataStructure` `TransientDataStore.remove(Hash key)`
`DataStructure` `PersistentDataStore.remove(Hash key)`
`DataStructure` `DataStore.remove(Hash key)`

Methods in net.i2p.router.networkdb.kademlia with parameters of type DataStructure
`void` `FloodfillNetworkDatabaseFacade.flood(DataStructure ds)`
`void` `TransientDataStore.put(Hash key, DataStructure data)`
`void` `PersistentDataStore.put(Hash key, DataStructure data)`
`void` `DataStore.put(Hash key, DataStructure data)`
`void` `KademliaNetworkDatabaseFacade.sendStore(Hash key, DataStructure ds, Job onSuccess, Job onFailure, long sendTimeout, java.util.Set toIgnore)`
`void` `FloodfillNetworkDatabaseFacade.sendStore(Hash key, DataStructure ds, Job onSuccess, Job onFailure, long sendTimeout, java.util.Set toIgnore)`

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)` Create a new search for the routingKey specified
`FloodfillStoreJob(RouterContext context, FloodfillNetworkDatabaseFacade facade, Hash key, DataStructure data, Job onSuccess, Job onFailure, long timeoutMs, java.util.Set toSkip)`
`StoreJob(RouterContext context, KademliaNetworkDatabaseFacade facade, Hash key, DataStructure data, Job onSuccess, Job onFailure, long timeoutMs)` Create a new search for the routingKey specified
`StoreJob(RouterContext context, KademliaNetworkDatabaseFacade facade, Hash key, DataStructure data, Job onSuccess, Job onFailure, long timeoutMs, java.util.Set toSkip)`
`StoreState(RouterContext ctx, Hash key, DataStructure data)`
`StoreState(RouterContext ctx, Hash key, DataStructure data, java.util.Set toSkip)`