[][src]Struct channel_protocol::ChannelProtocol

pub struct ChannelProtocol { /* fields omitted */ }

Channel protocol structure

Methods

impl Protocol
[src]

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

extern crate channel_protocol;
extern crate serde_cbor;

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

extern crate channel_protocol;

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

extern crate channel_protocol;

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

impl Send for ChannelProtocol

impl !Sync for ChannelProtocol

Blanket Implementations

impl<T> From for T
[src]

Performs the conversion.

impl<T, U> Into for T where
    U: From<T>, 
[src]

Performs the conversion.

impl<T, U> TryFrom for T where
    T: From<U>, 
[src]

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

🔬 This is a nightly-only experimental API. (try_from)

Performs the conversion.

impl<T> Borrow for T where
    T: ?Sized
[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut for T where
    T: ?Sized
[src]

Mutably borrows from an owned value. Read more

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

🔬 This is a nightly-only experimental API. (try_from)

Performs the conversion.

impl<T> Any for T where
    T: 'static + ?Sized
[src]

🔬 This is a nightly-only experimental API. (get_type_id)

this method will likely be replaced by an associated static

Gets the TypeId of self. Read more