#cloud-events #router #cerk

cerk_loader_file

这是一个 CERK 的包。CERK 是一个用 Rust 编写并具有微内核架构的开源 CloudEvents 路由器。

6 个版本

0.2.8 2021年1月5日
0.2.7 2021年1月4日
0.2.6 2020年12月7日
0.2.1 2020年11月30日
0.1.0 2020年11月25日

#4 in #cerk

每月下载量 28

Apache-2.0

66KB
1K SLoC

cerk_loader_file

Build status

这是一个 CERK 的包。CERK 是一个用 Rust 编写并具有微内核架构的开源 CloudEvents 路由器。

简介

CERK 允许您在不同端口之间路由您的 CloudEvents。端口是交换 CloudEvents 的传输层绑定。它考虑到了模块化和便携性。

组件

CERK 配备了一些预制组件,但实现自定义组件也很容易。

有关详细信息,请参阅 GitHub

此组件:基于文件的加载器

cerk_loader_file 将不同的模块连接在一起,并将其传递给 bootstrap 函数。

它使用一个 ComponentStartLinks 文件,其中包含所有启动函数的链接和配置文件。配置文件可以通过环境变量 $INIT_PATH 或直接使用路径 ./init.json 传递。

示例配置

{
  "scheduler": "SCHEDULER",
  "router": "ROUTER",
  "config_loader": "CONFIG_LOADER",
  "ports": {
    "myport": "PORT"
  }
}
#[macro_use]
extern crate cerk_loader_file;
use cerk_loader_file::{start, ComponentStartLinks};

use cerk::runtime::{InternalServerId, InternalServerFn, InternalServerFnRefStatic, ScheduleFn, ScheduleFnRefStatic};
use cerk::runtime::channel::{BoxedReceiver, BoxedSender};
use cerk::kernel::{StartOptions, KernelFn};

fn dummy_scheduler(_: StartOptions, _: KernelFn) {}

fn dummy_router(_: InternalServerId, _: BoxedReceiver, _: BoxedSender) {}

fn dummy_config_loader(_: InternalServerId, _: BoxedReceiver, _: BoxedSender) {}

fn dummy_port(_: InternalServerId, _: BoxedReceiver, _: BoxedSender) {}

fn dummy_port_other(_: InternalServerId, _: BoxedReceiver, _: BoxedSender) {}

const SCHEDULER: ScheduleFnRefStatic = &(dummy_scheduler as ScheduleFn);
const ROUTER: InternalServerFnRefStatic = &(dummy_router as InternalServerFn);
const CONFIG_LOADER: InternalServerFnRefStatic = &(dummy_config_loader as InternalServerFn);
const PORT: InternalServerFnRefStatic = &(dummy_port as InternalServerFn);

fn main() {
    let link = ComponentStartLinks {
            schedulers: fn_to_links![SCHEDULER],
            routers: fn_to_links![ROUTER],
            config_loaders: fn_to_links![CONFIG_LOADER],
            ports: fn_to_links![PORT],
        };

    start(link);
}

示例

更新 Readme

原始的 Readme 文本位于 lib.rs 文件中的 Rust 文档注释中

  1. cargo安装 cargo-readme
  2. cargo readme > README.md

许可证

Apache-2.0

依赖项

约 7-18MB
约 261K SLoC