pub struct PreparedTune { /* private fields */ }Expand description
Everything prepare resolves before a tune’s long-running polling phase can start:
the already-validated/defaulted TuneArgs, the resolved template and derived tags, a
connected driver, the built LoopConfig, the run’s start time, and the response level
(if any) to write back at the end – plus the tune_runs row’s assigned id.
Exists to split [run_with_ctrl_c]’s single monolithic body into a fast, synchronous-ish
setup phase (this struct’s construction: template lookup, tag derivation, driver
connect, and the tune_runs insert that assigns PreparedTune::run_id) and a
long-running phase (drive/[execute]’s actual polling loop, potentially minutes
long) – so an HTTP caller (bhtune-server’s POST /api/runs) can run the first phase
inline in its request handler (fast enough to await directly, and any failure here – bad
template name, unreachable driver – is exactly the kind of problem an HTTP client
expects a synchronous error response for) and tokio::spawn the second, returning the
assigned run_id immediately rather than blocking the HTTP response for the whole test.
Every field but run_id is private: a caller that isn’t this module has no legitimate
reason to inspect a template/tags/driver/config mid-flight, only to hand the whole
prepared bundle to drive (or, internally, [run_with_ctrl_c]) unchanged.
Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for PreparedTune
impl !UnwindSafe for PreparedTune
impl Freeze for PreparedTune
impl Send for PreparedTune
impl Sync for PreparedTune
impl Unpin for PreparedTune
impl UnsafeUnpin for PreparedTune
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].