commonware_p2p/authenticated/discovery/actors/spawner/
ingress.rs1use crate::authenticated::{discovery::actors::tracker::Reservation, Mailbox};
2use commonware_cryptography::PublicKey;
3use commonware_runtime::{Sink, Stream};
4use commonware_stream::{Receiver, Sender};
5
6pub enum Message<O: Sink, I: Stream, P: PublicKey> {
8 Spawn {
10 peer: P,
12 connection: (Sender<O>, Receiver<I>),
14 reservation: Reservation<P>,
16 },
17}
18
19impl<P: PublicKey, O: Sink, I: Stream> Mailbox<Message<O, I, P>> {
20 pub async fn spawn(
22 &mut self,
23 connection: (Sender<O>, Receiver<I>),
24 reservation: Reservation<P>,
25 ) {
26 self.send(Message::Spawn {
27 peer: reservation.metadata().public_key().clone(),
28 connection,
29 reservation,
30 })
31 .await
32 .unwrap();
33 }
34}