pub struct BridgeState { /* private fields */ }Expand description
Owns one cached model and lifecycle/order watermarks for one container.
§Examples
let mut bridge = adam_web_ui::graph::BridgeState::default();
bridge.start(1)?;
assert!(bridge.start(1).is_err());Implementations§
Source§impl BridgeState
impl BridgeState
Sourcepub fn process(&mut self, message: ViewMessage) -> Result<Option<ViewReply>>
pub fn process(&mut self, message: ViewMessage) -> Result<Option<ViewReply>>
Dispatches a typed lifecycle message without framework-specific branching.
§Errors
Returns startup errors; current update failures are explicit failed replies.
- Complexity: O(p) time and space in model construction/propagation work.
§Examples
use adam_web_ui::graph::{BridgeState, ViewMessage};
assert!(BridgeState::default().process(ViewMessage::Start { generation: 1 })?.is_none());Sourcepub fn start(&mut self, generation: u32) -> Result<()>
pub fn start(&mut self, generation: u32) -> Result<()>
Claims a strictly newer generation and parses its model exactly once.
§Errors
Returns an error for a repeated/older generation or model initialization failure. A failed initialization still retires the claimed generation.
- Complexity: O(p) time and space for model initialization work
p.
§Examples
let mut bridge = adam_web_ui::graph::BridgeState::default();
bridge.start(1)?;Sourcepub fn handle(&mut self, request: ViewRequest) -> Result<Option<ViewReply>>
pub fn handle(&mut self, request: ViewRequest) -> Result<Option<ViewReply>>
Evaluates current ordered work without implicitly starting a generation.
Returns None only for inactive/unknown generations, consumed sequences,
or older geometry. Invalid current inputs produce a Failed reply.
Failed current requests consume their ordering identity too.
§Errors
Reserves transport-level errors for the channel owner; model/input errors
are represented by ViewReply::Failed.
- Complexity: O(p) time and space in cached model propagation work
p.
§Examples
let mut bridge = BridgeState::default();
assert!(bridge.handle(ViewRequest { generation: 1, revision: 1, sequence: 1,
bounds: [0.0, 0.0, 1.0, 1.0], viewport: [100.0, 100.0],
action: ViewAction::Fit })?.is_none());