Struct cbor_protocol::Protocol
source · [−]pub struct Protocol { /* private fields */ }
Expand description
CBOR protocol communication structure
Implementations
sourceimpl Protocol
impl Protocol
sourcepub fn new(host_url: &str, data_size: usize) -> Self
pub fn new(host_url: &str, data_size: usize) -> Self
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);
sourcepub fn send_message(
&self,
message: &[u8],
dest: SocketAddr
) -> Result<(), ProtocolError>
pub fn send_message(
&self,
message: &[u8],
dest: SocketAddr
) -> Result<(), ProtocolError>
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());
sourcepub fn send_pause(&self, dest: SocketAddr) -> Result<(), ProtocolError>
pub fn send_pause(&self, dest: SocketAddr) -> Result<(), ProtocolError>
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());
sourcepub fn send_resume(&self, dest: SocketAddr) -> Result<(), ProtocolError>
pub fn send_resume(&self, dest: SocketAddr) -> Result<(), ProtocolError>
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());
sourcepub fn recv_message(&self) -> Result<Value, ProtocolError>
pub fn recv_message(&self) -> Result<Value, ProtocolError>
sourcepub fn peek_peer(&self) -> Result<SocketAddr, ProtocolError>
pub fn peek_peer(&self) -> Result<SocketAddr, ProtocolError>
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();
sourcepub fn recv_message_peer(&self) -> Result<(SocketAddr, Value), ProtocolError>
pub fn recv_message_peer(&self) -> Result<(SocketAddr, Value), ProtocolError>
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();
sourcepub fn recv_message_peer_timeout(
&self,
timeout: Duration
) -> Result<(SocketAddr, Value), ProtocolError>
pub fn recv_message_peer_timeout(
&self,
timeout: Duration
) -> Result<(SocketAddr, Value), ProtocolError>
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),
};
sourcepub fn recv_message_timeout(
&self,
timeout: Duration
) -> Result<Value, ProtocolError>
pub fn recv_message_timeout(
&self,
timeout: Duration
) -> Result<Value, ProtocolError>
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
impl RefUnwindSafe for Protocol
impl Send for Protocol
impl Sync for Protocol
impl Unpin for Protocol
impl UnwindSafe for Protocol
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more