commonware_p2p/authenticated/lookup/actors/spawner/
ingress.rs1use crate::authenticated::{lookup::actors::tracker::Reservation, Mailbox};
2use commonware_cryptography::PublicKey;
3use commonware_runtime::{Sink, Stream};
4use commonware_stream::{Receiver, Sender};
5use commonware_utils::channels::fallible::AsyncFallibleExt;
6
7pub enum Message<Si: Sink, St: Stream, P: PublicKey> {
9 Spawn {
11 peer: P,
13 connection: (Sender<Si>, Receiver<St>),
15 reservation: Reservation<P>,
17 },
18}
19
20impl<Si: Sink, St: Stream, P: PublicKey> Mailbox<Message<Si, St, P>> {
21 pub async fn spawn(
26 &mut self,
27 connection: (Sender<Si>, Receiver<St>),
28 reservation: Reservation<P>,
29 ) {
30 self.0
31 .send_lossy(Message::Spawn {
32 peer: reservation.metadata().public_key().clone(),
33 connection,
34 reservation,
35 })
36 .await;
37 }
38}