1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
crate::ix!();

pub trait RemovePeer {
    fn remove_peer(&mut self, id: NodeId) -> Amo<Peer>;
}

impl RemovePeer for PeerManager {

    /**
      | Get a shared pointer to the Peer object
      | and remove it from m_peer_map.
      | 
      | May return an empty shared_ptr if the
      | Peer object can't be found.
      |
      */
    fn remove_peer(&mut self, id: NodeId) -> Amo<Peer> {

        let mut ret: Amo<Peer> = amo_none();

        let mut peer_map = self.peer_map.get_mut();

        if let Some(it) = peer_map.get(&id) {

            ret = it.clone();

            peer_map.remove(&id);
        }

        ret
    }
}