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