Crate rmp_ipc[][src]

Expand description

This project provides an ipc server and client implementation using messagepack. All calls are asynchronous and event based. Client Example:

use rmp_ipc::IPCBuilder;
// create the client

let ctx = IPCBuilder::new()
    .address("127.0.0.1:2020")
    // register callback
    .on("ping", |ctx, event| Box::pin(async move {
        println!("Received ping event.");
        ctx.emitter.emit_response(event.id(), "pong", ()).await?;
        Ok(())
    }))
    .build_client().await.unwrap();

// emit an initial event
let response = ctx.emitter.emit("ping", ()).await.unwrap().await_reply(&ctx).await.unwrap();
assert_eq!(response.name(), "pong");

Server Example:

use rmp_ipc::IPCBuilder;
// create the server
IPCBuilder::new()
    .address("127.0.0.1:2020")
    // register callback
    .on("ping", |ctx, event| Box::pin(async move {
        println!("Received ping event.");
        ctx.emitter.emit_response(event.id(), "pong", ()).await?;
        Ok(())
    }))
    .build_server().await.unwrap();

Modules

builder
client
context
error
error_event
server
stream_emitter

Structs

Event

A container representing an event and underlying binary data. The data can be decoded into an object representation or read as raw binary data.

IPCBuilder

A builder for the IPC server or client.