Skip to main content

Crate syncbat

Crate syncbat 

Source
Expand description

Sync-first runtime layer for batpak-family operation kits.

This crate is intentionally small at birth. It establishes the runtime layer boundary over batpak core without importing operation dialect, network, protocol-profile, or rendering semantics.

§Quick start

Build a Core, register one operation, invoke it synchronously.

use syncbat::{Core, EffectClass, Handler, HandlerError, HandlerResult, OperationDescriptor};

/// Echoes the input bytes back unchanged.
struct EchoHandler;

impl Handler for EchoHandler {
    fn handle(
        &mut self,
        input: &[u8],
        _cx: &mut syncbat::Ctx<'_>,
    ) -> HandlerResult {
        Ok(input.to_vec())
    }
}

const ECHO: OperationDescriptor = OperationDescriptor::new(
    "echo",
    EffectClass::Inspect,
    "echo.request",
    "echo.ack",
    "receipt.echo.v1",
);

let mut builder = Core::builder();
builder.register(ECHO.clone(), EchoHandler).expect("register");
let mut core = builder.build().expect("build");

let result = core.invoke("echo", b"hi".to_vec()).expect("invoke");
assert_eq!(result.output(), b"hi");

§Operation names

Operation names follow a stable grammar checked once by OperationName::new. Downstream code never re-parses; passing a plain &str to Core::invoke is fine, but pre-validating into OperationName documents intent and removes per-call grammar checks.

use syncbat::OperationName;

let name = OperationName::new("bank.commit").expect("grammar");
assert_eq!(name.as_str(), "bank.commit");

assert!(OperationName::new("bad..name").is_err());

Re-exports§

pub use builder::CoreBuilder;
pub use core::Checkout;
pub use core::CheckoutFrame;
pub use core::CheckoutResult;
pub use core::Core;
pub use core::Ctx;
pub use error::BuildError;
pub use error::ReceiptSinkHandlerCause;
pub use error::RuntimeError;
pub use handler::Handler;
pub use handler::HandlerError;
pub use handler::HandlerResult;
pub use module::Module;
pub use operation::DescriptorValidationError;
pub use operation::EffectClass;
pub use operation::OperationDescriptor;
pub use operation::OperationInput;
pub use operation::OperationOutput;
pub use operation::OperationRegisterItem;
pub use operation::MAX_DESCRIPTOR_REF_BYTES;
pub use operation::MAX_OPERATION_NAME_BYTES;
pub use operation_name::OperationName;
pub use operation_name::OperationNameError;
pub use receipt::BatpakReceiptFields;
pub use receipt::ReceiptEnvelope;
pub use receipt::ReceiptExtensionDrawer;
pub use receipt::ReceiptHash;
pub use receipt::ReceiptHashPolicy;
pub use receipt::ReceiptHasher;
pub use receipt::ReceiptOutcome;
pub use receipt::ReceiptSink;
pub use receipt::ReceiptSinkError;
pub use receipt::RecordedReceipt;
pub use receipt::SYNCBAT_RECEIPT_EVENT_KIND;
pub use register::CacheRegister;
pub use register::Register;
pub use register::RegisterValidationError;
pub use register_store::rebuild_register_from_store;
pub use register_store::RegisterOperationActionV1;
pub use register_store::RegisterOperationRowV1;
pub use register_store::StoreRegisterCatalog;
pub use register_store::StoreRegisterCatalogError;
pub use register_store::SYNCBAT_REGISTER_EVENT_KIND;
pub use store_sink::StoreReceiptSink;
pub use store_sink::StoreReceiptSinkError;

Modules§

builder
Builder for the synchronous runtime composition root.
core
Synchronous runtime composition root.
error
Error types for the syncbat runtime shell.
handler
Synchronous byte-oriented handler contracts.
module
Data-oriented module descriptors.
operation
Generic operation metadata for syncbat handlers.
operation_name
Single validating constructor for syncbat operation names.
receipt
Generic receipt envelope types for syncbat operation runs.
register
Durable-facing operation catalog and cache projection.
register_store
Batpak-backed durable register catalog rows.
store_sink
Batpak-backed receipt sink for syncbat receipt envelopes.

Enums§

SyncbatReceiptNamespace
Marker type for syncbat-owned receipt extensions.

Constants§

SYNCBAT_EXTENSION_NAMESPACE
Receipt-extension namespace owned by the syncbat runtime layer.

Functions§

receipt_extension_key
Construct a syncbat receipt-extension key.
receipt_extension_value
Wrap already-encoded bytes as a syncbat receipt-extension value.

Type Aliases§

SyncbatReceiptExtensionKey
Validated syncbat-owned receipt-extension key.
SyncbatReceiptExtensionValue
Encoded syncbat-owned receipt-extension value.

Attribute Macros§

operation
Generate a syncbat operation descriptor and optional registration function.