#ipc #node #external #address #process #tcp-streams

bin+lib subspace

一个方便的用于 IPC 的 crate,使用 TcpStreams

1 个不稳定版本

0.1.0 2020年6月9日

#62 in #external

MIT/Apache

24KB
536

subspace

subspace 是一个 高度不稳定 的方便的 crate,用于设置与外部进程(节点)的管理和通信。

示例

subspace 添加到您的 Cargo.toml

[dependencies]
subspace = "0.1.0"

在主进程中,创建一个 External 结构体。

    // For the full example, check tests/node_tests.rs

    // name is the path + filename of the executable to launch
    let name = "target/debug/example";

    // address is the hostname + port the node should bind to
    let address = "localhost:2345";

    External::new(&name, address.to_string())?;

在辅助进程中,解析命令行参数(示例中使用 clap)并创建一个节点。

fn main() {
    // Commandline arguments handled with clap, External will call the executable with --addr localhost:2345
    //
    let matches = App::new("Subspace example node")
        .author("ron")
        .about("An example process for subspace integration tests")
        .version("0.1")
        .arg(
            Arg::with_name("addr")
                .short("a")
                .long("addr")
                .help("Address this node should bind to")
                .takes_value(true),
        )
        .get_matches();

    // get address to bind to from arguments, then construct "this node"
    //
    let addr = matches.value_of("addr").unwrap();
    let mut node = Node::new(addr).unwrap();

    // call node.get_node_message() in this executables message loop, and act on it
    //
    loop {
        match node.get_node_message() {
            Some(NodeMessage::Exit) => break,
            _ => (),
        }

        // do work
    }
}

许可

许可协议为以下之一

任选其一。

贡献

除非您明确声明,否则您提交的任何贡献,根据 Apache-2.0 许可证的定义,将按上述方式双许可,不附加任何额外条款或条件。

依赖项

~1.2–2MB
~35K SLoC