use lib3h_protocol::{data_types::EntryData, Address};
pub type FromPeerAddress = String;
#[derive(Debug, PartialEq, Clone)]
pub enum DhtCommand {
HandleGossip(RemoteGossipBundleData),
FetchEntry(FetchEntryData),
HoldPeer(PeerData),
HoldEntry(EntryData),
BroadcastEntry(EntryData),
DropEntry(Address),
}
#[derive(Debug, PartialEq, Clone)]
pub enum DhtEvent {
GossipTo(GossipToData),
GossipUnreliablyTo(GossipToData),
HoldPeerRequested(PeerData),
PeerTimedOut(String),
HoldEntryRequested(FromPeerAddress, EntryData),
FetchEntryResponse(FetchEntryResponseData),
EntryPruned(Address),
}
#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
pub struct RemoteGossipBundleData {
pub from_peer_address: String,
pub bundle: Vec<u8>,
}
#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
pub struct GossipToData {
pub peer_address_list: Vec<String>,
pub bundle: Vec<u8>,
}
#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
pub struct PeerData {
pub peer_address: String,
pub transport: String,
pub timestamp: u64,
}
#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
pub struct FetchEntryData {
pub msg_id: String,
pub entry_address: Address,
}
#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
pub struct FetchEntryResponseData {
pub msg_id: String,
pub entry: EntryData,
}