#server-framework #framework #server #non-blocking

d3-components

服务器开发框架 — 组件层

3 个版本

0.1.3 2020年11月13日
0.1.2 2020年10月29日
0.1.0 2020年10月18日

2112 in 异步

22 每月下载量
用于 d3

MIT/Apache

190KB
3K SLoC

D3 的 Rust 组件层 — 服务器开发框架

Build Status Test Status License Cargo Documentation Rust 1.47+

组件层为机器提供组织层次结构。它基于组件/协调器/连接器模型,虽然不是唯一的模型,但我喜欢这个模型。这一层是网络暴露的地方。它是一个包装 Mio 的适配器。

用法

将以下内容添加到您的 Cargo.toml

[dependencies]
d3-derive = "0.1.3"
d3-core = "0.1.3"
d3-components = "0.1.3"

示例 监听地址:端口

#[macro_use]
extern crate d3_derive;

use d3_core::machine_impl::*;
use d3_core::executor;
use d3_components::network;

// A trivial Alice
pub struct Alice {}

// Implement the Machine trait for Alice
impl Machine<network::NetCmd> for Alice {
     fn receive(&self, cmd: StateTable) {
     }
}

// Start the scheduler and executor and network
executor::start_server();
network::start_network();

// create the Machine from Alice, getting back a machine and Sender<StateTable>.
let (alice, sender) = executor::connect(Alice{});

// send a command to the network asking for Alice to 
// be notified if a connection is received for 127.0.0.1:4000
let cmd = NetCmd::BindListener("127.0.0.1:4000".to_string, sender);
network::get_network_sender().send(cmd).expect("send failed");

// Stop the scheduler and executor and network
network::start_network();
executor::stop_server();

依赖项

~3–4.5MB
~86K SLoC