#protocols #datrs

simple-message-channels

Simple binary protocol with a channel, type, message scheme

5 unstable releases

0.2.0 Feb 7, 2020
0.1.1 Jan 26, 2020
0.1.0 Jan 23, 2020
0.0.2 Dec 2, 2019
0.0.1 Nov 21, 2019

#138 in #protocol

MIT license

13KB
218 lines

simple-message-channels

Simple streamable state machine that implements a useful channel, message-type, message pattern.

A port of the JavaScript module simple-message-channels to Rust. Original module by mafintosh.

Examples

See examples/.

The following sends three messages, transforms them, and prints the results:

cargo run --example send | cargo run --example echo_upper | cargo run --example recv

This example would read messages from STDIN and echos them back to STDOUT:

async fn echo() -> Result<(), io::Error> {
    let stdin = io::stdin().lock().await;
    let stdout = io::stdout().lock().await;
    let mut reader = Reader::new(stdin);
    let mut writer = Writer::new(stdout);
    while let Some(msg) = reader.next().await {
        let msg = msg?;
        writer.send(msg).await?;
    }
    Ok(())
}

Dependencies

~5–14MB
~186K SLoC