summaryrefslogtreecommitdiffstats
path: root/src/types/udp.rs
blob: f45cf854bbae91859c6a13a4ddc07cec736ab574 (plain) (blame)
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
use std::error;

/* Often times an a file descriptor in an atomic might suffice.
 */
pub trait Bind<Endpoint>: Send + Sync {
    type Error : error::Error;

    fn new() -> Self;

    /// Updates the port of the Bind
    /// 
    /// # Arguments
    /// 
    /// - port, The new port to bind to. 0 means any available port.
    /// 
    /// # Returns
    /// 
    /// The unit type or an error, if binding fails
    fn set_port(&self, port: u16) -> Result<(), Self::Error>;

    /// Returns the current port of the bind
    fn get_port(&self) -> u16;
    
    fn recv(&self, dst: &mut [u8]) -> Endpoint;
    fn send(&self, src: &[u8], dst: &Endpoint);
}