p2p/network/kad/stream/
mod.rs1mod p2p_network_kad_stream_state;
2use redux::Callback;
3use serde::{Deserialize, Serialize};
4
5use crate::{ConnectionAddr, P2pNetworkKademliaAction, PeerId, StreamId};
6
7pub use self::p2p_network_kad_stream_state::*;
8
9mod p2p_network_kad_stream_actions;
10pub use self::p2p_network_kad_stream_actions::*;
11
12use super::{P2pNetworkKadEntry, CID};
13
14#[cfg(feature = "p2p-libp2p")]
15mod p2p_network_kad_stream_reducer;
16
17#[derive(Deserialize, Serialize, Debug, Clone)]
18pub enum P2pNetworkKademliaStreamWaitOutgoingCallback {
19 AnswerFindNodeRequest {
20 callback: Callback<(ConnectionAddr, PeerId, StreamId, CID)>,
21 args: CID,
22 },
23 UpdateFindNodeRequest {
24 callback: Callback<(ConnectionAddr, PeerId, StreamId, Vec<P2pNetworkKadEntry>)>,
25 args: Vec<P2pNetworkKadEntry>,
26 },
27}
28
29impl P2pNetworkKademliaStreamWaitOutgoingCallback {
30 pub fn answer_find_node_request(cid: CID) -> Self {
31 Self::AnswerFindNodeRequest {
32 callback: redux::callback!(
33 on_p2p_network_stream_wait_outgoing_answer_find_node_request((
34 addr: ConnectionAddr,
35 peer_id: PeerId,
36 stream_id: StreamId,
37 cid: CID
38 )) -> crate::P2pAction{
39 P2pNetworkKademliaAction::AnswerFindNodeRequest { addr, peer_id, stream_id, key: cid }
40 }
41 ),
42 args: cid,
43 }
44 }
45 pub fn update_find_node_request(peers: Vec<P2pNetworkKadEntry>) -> Self {
46 Self::UpdateFindNodeRequest {
47 callback: redux::callback!(
48 on_p2p_network_stream_wait_outgoing_answer_find_node_request((
49 addr: ConnectionAddr,
50 peer_id: PeerId,
51 stream_id: StreamId,
52 closest_peers: Vec<P2pNetworkKadEntry>
53 )) -> crate::P2pAction{
54 P2pNetworkKademliaAction::UpdateFindNodeRequest { addr, peer_id, stream_id, closest_peers }
55 }
56 ),
57 args: peers,
58 }
59 }
60}