pulsar_network/client/
send.rs

1use crate::envelope::{Envelope, Kind};
2use crate::{Client, Message};
3use crate::Peer;
4use fides::chacha20poly1305;
5use std::sync::Arc;
6
7impl Client {
8
9    pub fn send(&self, message: Message, peer: Peer) {
10
11        let outgoing_clone = Arc::clone(&self.outgoing_socket);
12
13        let outgoing = outgoing_clone.lock().unwrap();
14
15        match chacha20poly1305::encrypt(&peer.shared_key, &message.to_bytes()) {
16
17            Ok(cipher) => {
18
19                let envelope = Envelope::new(Kind::Encrypted, &cipher, &self.public_key, &self.route);
20        
21                let _r = outgoing.send_to(&envelope.to_bytes(), peer.address);
22
23            },
24            Err(_) => ()
25        }
26    }
27}