stdiobus-backend-native 1.1.1

Native FFI backend for stdio_bus - direct C library integration
Documentation

stdiobus-backend-native

Crates.io License

Native FFI backend for stdio_bus - direct C library integration.

This crate provides a native backend that links directly to libstdio_bus.a via FFI. It offers the best performance but requires building the C library.

Installation

[dependencies]
stdiobus-backend-native = "1.0"

Prerequisites

Build libstdio_bus.a from the main repository:

git clone https://github.com/stdiobus/stdiobus-rust
cd stdiobus-rust
make lib

export STDIO_BUS_LIB_DIR=$(pwd)/build

Usage

Most users should use stdiobus-client with the native feature:

use stdiobus_client::{StdioBus, BusConfig, PoolConfig};

let bus = StdioBus::builder()
    .config(BusConfig {
        pools: vec![PoolConfig {
            id: "worker".into(),
            command: "node".into(),
            args: vec!["./worker.js".into()],
            instances: 2,
        }],
        limits: None,
    })
    .backend_native()
    .build()?;

Direct Usage

use stdiobus_backend_native::NativeBackend;
use stdiobus_core::{BusConfig, PoolConfig, ConfigSource};

// From programmatic config (no file needed)
let config = BusConfig {
    pools: vec![PoolConfig {
        id: "worker".into(),
        command: "node".into(),
        args: vec!["./worker.js".into()],
        instances: 2,
    }],
    limits: None,
};
let backend = NativeBackend::from_config_source(&ConfigSource::Config(config))?;

// From file path
let backend = NativeBackend::new("./config.json")?;

backend.start().await?;

Platform Support

Platform Status
Linux x64/arm64
macOS x64/arm64
Windows ✘ (use Docker backend)

License

Apache-2.0