pub struct Protocol { /* private fields */ }
Expand description

CBOR protocol communication structure

Implementations

Binds a UDP listener socket and saves it in a new protocol instance

Arguments
  • host_url - The IP address and port to bind
  • data_size - Expected max size of payload in messages
Errors

If this function encounters any errors, it will panic

Examples
use cbor_protocol::*;

let cbor_connection = Protocol::new(&"0.0.0.0:8000".to_owned(), 4096);

Send a CBOR packet to a specified UDP socket destination

Arguments
  • message - CBOR packet to send. Packet must be a serialized array or tuple.
  • dest - UDP socket destination
Errors

If this function encounters any errors, it will return an error message string

Examples
use cbor_protocol::*;
use serde_cbor::ser;

let cbor_connection = Protocol::new(&"0.0.0.0:8000".to_owned(), 4096);
let message = ser::to_vec_packed(&["ping"]).unwrap();

cbor_connection.send_message(&message, "0.0.0.0:8001".parse().unwrap());
use cbor_protocol::*;
use serde_cbor::ser;

let cbor_connection = Protocol::new(&"0.0.0.0:8000".to_owned(), 4096);
let message = ser::to_vec_packed(&("hello", "world")).unwrap();

cbor_connection.send_message(&message, "0.0.0.0:8001".parse().unwrap());

Send a pause message to a specified UDP socket destination

Arguments
  • dest - UDP socket destination
Errors

If this function encounters any errors, it will return an error message string

Examples
use cbor_protocol::*;

let cbor_connection = Protocol::new(&"0.0.0.0:8000".to_owned(), 4096);

cbor_connection.send_pause("0.0.0.0:8001".parse().unwrap());

Send a resume message to a specified UDP socket destination

Arguments
  • dest - UDP socket destination
Errors

If this function encounters any errors, it will return an error message string

Examples
use cbor_protocol::*;

let cbor_connection = Protocol::new(&"0.0.0.0:8000".to_owned(), 4096);

cbor_connection.send_resume("0.0.0.0:8001".parse().unwrap());

Receive a UDP message (no timeout)

Errors

If this function encounters any errors, it will return an error message string

Examples
use cbor_protocol::*;

let cbor_connection = Protocol::new(&"0.0.0.0:8000".to_owned(), 4096);

let message = cbor_connection.recv_message().unwrap();

Peek at the sender information for the next message in the UDP receive buffer

Errors

If this function encounters any errors, it will return an error message string

Examples
use cbor_protocol::*;

let cbor_connection = Protocol::new(&"0.0.0.0:8000".to_owned(), 4096);

let source = cbor_connection.peek_peer();

Receive a UDP message and take note of the sender (no timeout)

Errors

If this function encounters any errors, it will return an error message string

Examples
use cbor_protocol::*;

let cbor_connection = Protocol::new(&"0.0.0.0:8000".to_owned(), 4096);

let (source, message) = cbor_connection.recv_message_peer().unwrap();

Receive a UDP message and take note of the sender (with timeout)

Arguments
  • timeout - Maximum amount of time to wait for a UDP packet
Errors
  • If this function times out, it will return Err(None)
  • If this function encounters any errors, it will return an error message string
Examples
use cbor_protocol::*;
use std::time::Duration;

let cbor_connection = Protocol::new(&"0.0.0.0:8000".to_owned(), 4096);

let (source, message) = match cbor_connection.recv_message_peer_timeout(Duration::from_secs(1)) {
    Ok(data) => data,
    Err(ProtocolError::Timeout) => {
        println!("Timeout waiting for message");
        return;
    }
    Err(err) => panic!("Failed to receive message: {}", err),
};

Receive a UDP message (with timeout)

Arguments
  • timeout - Maximum amount of time to wait for a UDP packet
Errors
  • If this function times out, it will return Err(None)
  • If this function encounters any errors, it will return an error message string
Examples
use cbor_protocol::*;
use std::time::Duration;

let cbor_connection = Protocol::new(&"0.0.0.0:9000".to_owned(), 4096);

let message = match cbor_connection.recv_message_timeout(Duration::from_secs(1)) {
    Ok(data) => data,
    Err(ProtocolError::Timeout) => {
        println!("Timeout while waiting for message");
        return;
    }
    Err(err) => panic!("Failed to receive message: {}", err),
};

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.