Skip to main content

BacktestSession

Struct BacktestSession 

Source
pub struct BacktestSession { /* private fields */ }
Expand description

Active backtest session over a WebSocket connection.

Dropping the session sends a best-effort close frame if a Tokio runtime is available. Call BacktestSession::close to request server-side cleanup.

Implementations§

Source§

impl BacktestSession

Source

pub fn session_id(&self) -> Option<&str>

Return the server-assigned session id, if known.

Source

pub fn rpc_endpoint(&self) -> Option<&str>

Return the session-scoped RPC endpoint if provided.

Source

pub fn last_sequence(&self) -> Option<u64>

Return the highest sequenced control-websocket response observed so far.

Source

pub fn rpc(&self) -> &RpcClient

Return the RPC client for this session’s endpoint.

Always available after BacktestClient::create_session completes.

Source

pub fn is_ready_for_continue(&self) -> bool

Return whether the session is currently ready to accept Continue.

Source

pub fn apply_response(&mut self, response: &BacktestResponse)

Update internal readiness state based on a response.

Source

pub async fn resume_attached_session(&mut self) -> BacktestClientResult<()>

Sent after reattaching and rebuilding any dependent subscriptions so the manager can resume a session that was paused for handoff.

Source

pub async fn send( &mut self, request: &BacktestRequest, timeout: Option<Duration>, ) -> BacktestClientResult<()>

Send a raw backtest request over the WebSocket.

Source

pub async fn next_response( &mut self, timeout: Option<Duration>, ) -> BacktestClientResult<Option<BacktestResponse>>

Receive the next response, using the backlog first.

Source

pub async fn next_event( &mut self, timeout: Option<Duration>, ) -> BacktestClientResult<Option<BacktestResponse>>

Receive the next response and update readiness state.

Source

pub fn responses( self, timeout: Option<Duration>, ) -> impl Stream<Item = BacktestClientResult<BacktestResponse>>

Stream responses, updating readiness state as items arrive.

This consumes the session and yields responses until the connection ends.

Source

pub async fn ensure_ready( &mut self, timeout: Option<Duration>, ) -> BacktestClientResult<ReadyOutcome>

Wait for the session to become ready or completed.

Source

pub async fn wait_for_status( &mut self, desired: BacktestStatus, timeout: Option<Duration>, ) -> BacktestClientResult<()>

Wait for a specific status to be emitted.

Source

pub async fn send_continue( &mut self, params: ContinueParams, timeout: Option<Duration>, ) -> BacktestClientResult<()>

Send a Continue request and reset readiness.

Source

pub async fn advance_step<F>( &mut self, state: &mut AdvanceState, wait_for_slots: bool, timeout: Option<Duration>, on_event: &mut F, ) -> BacktestClientResult<()>

Read and apply a single response while advancing.

Source

pub async fn continue_until_ready<F>( &mut self, cont: Continue, timeout: Option<Duration>, on_event: F, ) -> BacktestClientResult<ContinueResult>

Advance until the session becomes ready for another Continue.

Source

pub async fn advance<F>( &mut self, cont: Continue, timeout: Option<Duration>, on_event: F, ) -> BacktestClientResult<ContinueResult>

Advance and wait for both readiness and slot notifications.

Source

pub async fn modify_program( &self, program_id: &str, elf: &[u8], ) -> Result<BTreeMap<Address, AccountData>, ProgramModError>

Build a program-data account modification from raw ELF bytes.

Derives the ProgramData address from program_id, queries the session’s RPC endpoint for the current slot and rent-exempt minimum, then returns a modification map ready to pass to Continue::builder().modify_accounts(...).

The deploy slot is set to current_slot - 1 so the program appears deployed before the next executed slot.

Source

pub async fn modify_accounts( &self, modifications: &AccountModifications, ) -> BacktestClientResult<usize>

Modify accounts on the session’s RPC endpoint via the custom modifyAccounts method.

Returns the number of accounts modified on success.

Source

pub async fn subscribe_program_logs<F, Fut>( &self, program_id: &str, commitment: CommitmentConfig, on_notification: F, ) -> Result<LogSubscriptionHandle, SubscriptionError>
where F: Fn(Response<RpcLogsResponse>) -> Fut + Send + Sync + 'static, Fut: Future<Output = ()> + Send + 'static,

Subscribe to program log notifications using the session’s RPC endpoint.

Equivalent to calling subscribe_program_logs with the endpoint from rpc_endpoint, which is set after BacktestClient::create_session completes.

Source

pub async fn subscribe_account_diffs<F, Fut>( &self, account: &str, on_notification: F, ) -> Result<AccountDiffSubscriptionHandle, SubscriptionError>
where F: Fn(AccountDiffNotification) -> Fut + Send + Sync + 'static, Fut: Future<Output = ()> + Send + 'static,

Subscribe to account diff notifications using the session’s RPC endpoint.

Equivalent to calling subscribe_account_diffs with the endpoint from rpc_endpoint, which is set after BacktestClient::create_session completes.

Source

pub async fn close( &mut self, timeout: Option<Duration>, ) -> BacktestClientResult<()>

Request server cleanup and close the underlying WebSocket.

This is idempotent and will return Ok(()) if the connection is already closed.

Source

pub async fn close_with_frame( &mut self, timeout: Option<Duration>, frame: Option<CloseFrame<'static>>, ) -> BacktestClientResult<()>

Close the session with a specific WebSocket close frame.

Source

pub async fn close_with_reason( &mut self, timeout: Option<Duration>, code: CloseCode, reason: impl Into<String>, ) -> BacktestClientResult<()>

Close the session with a close code and reason.

Source§

impl BacktestSession

Source

pub async fn advance_to_discovery( &mut self, timeout: Option<Duration>, ) -> BacktestClientResult<DiscoveryStepResult>

Wait for the next batch matching a registered discovery filter and pause immediately before it executes.

DiscoveryBatch events are emitted by the server as a background scan independent of execution — no Continue is needed to trigger them. This method consumes the next queued DiscoveryBatch, sends ContinueTo to execute up to (but not including) that batch, then waits for Paused.

While paused, the session’s RPC endpoint reflects state through batch_index - 1 of the discovered slot — no transaction in the discovered batch has executed yet.

Trait Implementations§

Source§

impl Debug for BacktestSession

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for BacktestSession

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more