dusk-uds 0.1.0

Minimalistic boilerplate for UnixListener bindings.

Dusk Unix Domain Sockets

Crate Documentation

Minimalistic boilerplate for [UnixListener] bindings.

Complies with the log facade.

Installation

Add this to your Cargo.toml:

[dependencies]
dusk-uds = "0.1"

Example

use dusk_uds::{Message, State, UnixDomainSocket};
use std::io::{Read, Write};
use std::sync::mpsc;

fn handler<S: Read + Write>(socket: S, sender: mpsc::Sender<Message>) {
    let mut socket = socket;
    let mut buf = [0u8; 4];

    // UnixListener implements Read + Write
    socket.read_exact(&mut buf).unwrap();
    socket.write_all(b"Some reply").unwrap();

    // Ask the listener to stop after the next iteration
    sender
        .send(Message::ChangeState(State::ShouldQuit))
        .unwrap();
}

fn main() {
    // Set the correct path
    // /dev/null will fail, unless your OS is broken :)
    let uds = UnixDomainSocket::from("/dev/null").bind(handler);
    if let Err(_e) = uds {
        // Report
    }
}