[][src]Crate rustypipes

RustyPipes

rusty-pipes is a library which provides functions to work with the Octopipes Protocol

Examples

Client

extern crate rustypipes;
use std::time::Duration;
 
//Instance new client
let mut client: rustypipes::OctopipesClient = rustypipes::OctopipesClient::new(String::from("myclient"), String::from("/tmp/cap.fifo"), rustypipes::OctopipesProtocolVersion::Version1);
//Subscribe to the preferred groups
if let Err(error) = client.subscribe(&vec![String::from("MYSUBSCRIPTIONS")]) {
    println!("Error while trying to subscribe: {}", error);
}
//Start loop (optional, a client could also only send messages)
if let Err(error) = client.start_loop() {
    println!("Error while trying to start loop: {}", error);
}
//In a loop get the next message
match client.get_next_message() {
    Err(error) => {
        println!("Error while fetching new messages: {}", error);
    },
    Ok(inbox) => {
        if let Some(message) = inbox {
            //Do what you want with your message
        }
    }
};
//Send the message you want
if let Err(error) = client.send(&String::from("MY_RECIPIENT"), vec!['H' as u8, 'I' as u8]) {
    println!("Error while sending message: {}", error);
}
//Unsubscribe once you're done
if let Err(error) = client.unsubscribe() {
    println!("Error while trying to unsubscribe: {}", error);
}

Server

extern crate rustypipes;
use std::time::Duration;
use std::thread::sleep;
 
//Instance a server
let mut server: rustypipes::OctopipesServer = rustypipes::OctopipesServer::new(rustypipes::OctopipesProtocolVersion::Version1, String::from("/tmp/cap.fifo"), String::from("/tmp/clients/"));
//Start CAP listener
if let Err(error) = server.start_cap_listener() {
    panic!("Could not start CAP listener: {}", error);
}
//In your main loop fetch workers and CAP, everything is handled by these functions, nothing else has to be done by the user
let mut terminate_server: bool = false;
while !terminate_server {
    //Listen for incoming CAP messages (use cap_all or cap_once)
    if let Err(error) = server.process_cap_all() {
        println!("Error while processing CAP: {}", error);
    }
    //Process workers (You can use process_once, process_all, process_first)
    if let Err((worker, error)) = server.process_once() {
        println!("Error while trying to process client {}: {}", worker, error);
    }
    sleep(Duration::from_millis(100)); //Sleep for 100ms
}
//Once you're done terminate the server
if let Err(error) = server.stop_server() {
    panic!("Could not stop Server: {}\n", error);
}

Modules

client

Client

message

Message

server

Server

Structs

OctopipesClient

OctopipesClient

OctopipesMessage

OctopipesMessage

OctopipesOptions

OctopipesState

OctopipesServer

OctopipesServer

Enums

OctopipesCapError

OctopipesCapError

OctopipesCapMessage

OctopipesCapMessage

OctopipesError

Data types

OctopipesProtocolVersion

OctopipesProtocolVersion

OctopipesServerError

OctopipesServerError

OctopipesServerState

OctopipesServerState

OctopipesState

OctopipesState

Constants

RUSTYPIPES_VERSION
RUSTYPIPES_VERSION_MAJOR
RUSTYPIPES_VERSION_MINOR