scatter_net/scatter_net/net/methods/
accept_connection.rs1use iroh::endpoint::Connection;
2
3use crate::{Peer, ScatterNet};
4
5impl ScatterNet {
6 pub fn accept_connection(
11 &self,
12 connection: Connection,
13 ) -> Result<Peer, ScatterNetAcceptConnectionError> {
14 let node_id = connection.remote_node_id()?;
15 let peer = self.get_peer(&node_id);
16
17 if let Some(peer) = peer {
18 peer.replace_connection(connection);
19
20 return Ok(peer);
21 }
22
23 let peer = Peer::builder(self.clone(), node_id).finalize(connection);
24
25 Ok(peer)
26 }
27}
28
29#[derive(thiserror::Error, Debug)]
30pub enum ScatterNetAcceptConnectionError {
31 #[error(transparent)]
32 RemoteNodeId(#[from] iroh::endpoint::RemoteNodeIdError),
33}