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

Channel protocol structure

Implementations

Create a new channel protocol instance using an automatically assigned UDP socket

Arguments
  • host_ip - The local IP address
  • remote_addr - The remote IP and port to communicate with
  • data_len - Max payload length
Errors

If this function encounters any errors, it will panic

Examples
use channel_protocol::*;

let channel_protocol = ChannelProtocol::new("0.0.0.0", "192.168.0.1:7000", 4096);

Set new remote address on existing channel procotol structure

Arguments
  • remote - New remote address

Send CBOR packet to the destination port

Arguments
  • vec - CBOR packet to send
Errors

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

Examples
use channel_protocol::*;
use serde_cbor::ser;

let c_protocol = ChannelProtocol::new("0.0.0.0", "0.0.0.0:7000", 4096);
let message = ser::to_vec_packed(&"ping").unwrap();

c_protocol.send(&message);

Receive a raw cbor message message

Arguments
  • timeout - Maximum time to wait for a reply. If None, will block indefinitely
Errors
  • If this function times out, it will return Err(ProtocolError::ReceiveTimeout)
  • If this function encounters any errors, it will return an error message string
Examples
use channel_protocol::*;
use std::time::Duration;

let c_protocol = ChannelProtocol::new("0.0.0.0", "0.0.0.0:7000", 4096);

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

Receive a parsed channel procotol message

Arguments
  • timeout - Maximum time to wait for a reply. If None, will block indefinitely
Errors
  • If this function times out, it will return Err(ProtocolError::ReceiveTimeout)
  • If this function encounters any errors, it will return an error message string
Examples
use channel_protocol::*;
use std::time::Duration;

let c_protocol = ChannelProtocol::new("0.0.0.0", "0.0.0.0:7000", 4096);

let message = match c_protocol.recv_message(Some(Duration::from_secs(1))) {
    Ok(data) => data,
    Err(ProtocolError::ReceiveTimeout) =>  {
        println!("Timeout 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.