braid-core 0.1.4

Unified Braid Protocol implementation in Rust, including Braid-HTTP, Antimatter CRDT, and BraidFS.
Documentation
//! Braid HTTP server implementation.
//!
//! This module provides server-side support for the Braid protocol using Axum.
//! It enables applications to:
//!
//! - **Track resource versions** as a directed acyclic graph (DAG)
//! - **Send updates** as snapshots or patches
//! - **Stream subscription updates** to clients (HTTP 209)
//! - **Handle version conflicts** with merge strategies
//! - **Manage resource state** with CRDT support
//!
//! # Module Organization
//!
//! ```text
//! server/
//! ├── middleware        - BraidLayer and BraidState extractor
//! ├── send_update       - SendUpdateExt trait for responses
//! ├── parse_update      - ParseUpdateExt trait for requests
//! ├── config            - ServerConfig options
//! ├── resource_state    - ResourceStateManager for CRDT state
//! └── conflict_resolver - ConflictResolver for merging
//! ```

mod config;
mod middleware;
mod parse_update;
mod send_update;
pub mod utils;

pub mod conflict_resolver;
pub mod multiplex;
pub mod resource_state;
pub mod subscription;

#[cfg(test)]
mod tests;

pub use braid_http::types::UpdateResponse;
pub use config::ServerConfig;
pub use conflict_resolver::ConflictResolver;
pub use middleware::{BraidLayer, BraidState, IsFirefox};
pub use parse_update::ParseUpdateExt;
pub use resource_state::ResourceStateManager;
pub use send_update::SendUpdateExt;

use crate::core::Update;
use std::sync::Arc;
use tokio::sync::broadcast;

/// Broadcast channel for sending updates to multiple subscribers.
pub type UpdateBroadcast = broadcast::Sender<Arc<Update>>;