1use fedimint_core::config::P2PMessage;
2use fedimint_core::net::peers::DynP2PConnections;
3use fedimint_core::{NumPeers, PeerId};
45/// A handle passed to `ServerModuleInit::distributed_gen`
6///
7/// This struct encapsulates dkg data that the module should not have a direct
8/// access to, and implements higher level dkg operations available to the
9/// module to complete its distributed initialization inside the federation.
10#[non_exhaustive]
11pub struct PeerHandle<'a> {
12// TODO: this whole type should be a part of a `fedimint-server` and fields here inaccessible
13 // to outside crates, but until `ServerModule` is not in `fedimint-server` this is impossible
14#[doc(hidden)]
15pub num_peers: NumPeers,
16#[doc(hidden)]
17pub identity: PeerId,
18#[doc(hidden)]
19pub connections: &'a DynP2PConnections<P2PMessage>,
20}
2122impl<'a> PeerHandle<'a> {
23pub fn new(
24 num_peers: NumPeers,
25 identity: PeerId,
26 connections: &'a DynP2PConnections<P2PMessage>,
27 ) -> Self {
28Self {
29 num_peers,
30 identity,
31 connections,
32 }
33 }
3435pub fn num_peers(&self) -> NumPeers {
36self.num_peers
37 }
38}