Expand description
Ergonomic async client for the simulator backtest WebSocket API.
This wraps the simulator-api request/response protocol with helpers for common
workflows (create session, wait ready, continue/advance, close), while still allowing full
access to raw BacktestRequest / BacktestResponse when needed.
§Quickstart
use std::time::Duration;
use simulator_client::{BacktestClient, Continue, CreateSession};
let client = BacktestClient::builder()
.url("ws://localhost:8900/backtest")
.api_key("local-dev-key")
.build();
let mut session = client
.create_session(
CreateSession::builder()
.start_slot(100)
.slot_count(10)
.build(),
)
.await?;
session.ensure_ready(Some(Duration::from_secs(30))).await?;
session
.continue_until_ready(
Continue::builder().advance_count(1).build(),
None,
|_| {},
)
.await?;
session.close(Some(Duration::from_secs(10))).await?;§Lifecycle notes
BacktestClient::create_sessionsendsCreateBacktestSessionand waits forSessionCreated, buffering other responses until the session is ready.BacktestSession::closesendsCloseBacktestSessionand then closes the WebSocket.- Dropping
BacktestSessionsends a best-effort WebSocket close frame if a Tokio runtime is available. Callcloseexplicitly to ensure server-side session cleanup. connect_timeoutgoverns the initial handshake;request_timeoutapplies to send/receive operations and can be overridden per call.- For streaming workflows, use
BacktestSession::responses(consumes the session) ornext_eventto keep readiness state in sync while consuming responses.
Re-exports§
pub use injection::ProgramModError;pub use injection::build_program_injection;pub use subscriptions::LogSubscriptionHandle;pub use subscriptions::SubscriptionError;pub use subscriptions::subscribe_program_logs;pub use urls::UrlError;pub use urls::http_to_ws_url;
Modules§
Structs§
- Advance
State - Mutable state for driving a session with
advance_step. - Available
Range - One contiguous block range available on the history clerk.
- Backtest
Client - Backtest WebSocket client configured with a base URL and API key.
- Backtest
Session - Active backtest session over a WebSocket connection.
- Continue
- Builder for
Continuerequests. - Continue
Result - Summary of responses collected while advancing a backtest.
- Create
Session - Builder for
CreateBacktestSession. - Session
Coverage - Coverage of a session’s observed slot notifications and completion state.
Enums§
- Backtest
Client Error - Coverage
Error - Coverage validation failures for a backtest session.
- Ready
Outcome - Outcome of waiting for readiness on a backtest session.
- Serialize
Encode Error - Error serializing a transaction for injection.
Functions§
- split_
range - Split a user-requested
[start_slot, end_slot]range across the available bundle ranges, returning a list of non-overlapping(start, end)pairs — one per bundle that intersects the requested range.