use crate::{
discovery::lookup::IterativeLookup,
discv4::messages::{Message, Packet},
utils::node_id,
};
use bytes::BytesMut;
use ethrex_common::{H256, H512};
use std::{collections::HashMap, net::SocketAddr, time::Instant};
pub const EXPIRATION_SECONDS: u64 = 20;
#[derive(Debug, Default)]
pub struct Discv4State {
pub pending_find_node: HashMap<H256, Instant>,
pub active_lookups: Vec<(IterativeLookup, BytesMut)>,
}
#[derive(Debug, Clone)]
pub struct Discv4Message {
pub(crate) from: SocketAddr,
pub(crate) message: Message,
pub(crate) hash: H256,
pub(crate) sender_public_key: H512,
}
impl Discv4Message {
pub fn from(packet: Packet, from: SocketAddr) -> Self {
Self {
from,
message: packet.get_message().clone(),
hash: packet.get_hash(),
sender_public_key: packet.get_public_key(),
}
}
pub fn get_node_id(&self) -> H256 {
node_id(&self.sender_public_key)
}
}