pub struct ObserveRunsRequest {
pub spool: Option<SpoolRef>,
pub threads: Vec<ThreadRef>,
pub runs: Vec<RecordRef>,
pub include_timeline: bool,
pub page: Option<PageRequest>,
pub observe: Option<ObserveOptions>,
pub timeline_start: i32,
pub timeline_limit: u32,
}Fields§
§spool: Option<SpoolRef>§threads: Vec<ThreadRef>§runs: Vec<RecordRef>§include_timeline: bool§page: Option<PageRequest>§observe: Option<ObserveOptions>§timeline_start: i32LATEST requires include_timeline, exactly one run in runs, FOLLOW (or the default mode), a positive timeline_limit, and no page request. The initial snapshot includes the selected RunRecord and policy, when present, plus at most timeline_limit records, ordered by position from oldest to newest. Its PageInfo is exhausted with an empty next_page when the selection fits. When mandatory run/policy and each whole timeline record fit, budget-limited snapshots return timeline PARTIAL with an empty next_page and page.exhausted=false. The checkpoint cursor retains the fixed initial latest-N lower/upper boundary and last delivered position. The first snapshot_complete=true commits staging, not completeness of coverage. Deliver the fixed remainder in bounded UPSERT batches on this stream or after resume, before following newer positions. The last remainder batch has timeline COMPLETE, page.exhausted=true and empty next_page, then a checkpoint. Charge all remainder payloads/statuses/checkpoints to budget. Impossible fixed request/control overhead (including the terminal-failure reserve in ReadBudget) is INVALID_ARGUMENT before matching. ObserveRuns has no guaranteed whole-record bound: after authorization/projection, a RunRecord, RunPolicy or TimelineRecord that cannot fit an empty legal batch with controls, or a mandatory initial run/policy set that cannot fit the initial snapshot, ends with CallFailure RESOURCE_EXHAUSTED, message exactly “indivisible result exceeds read budget”, no ErrorDetail or retry hint. Apply this in default/LATEST mode, initial/resumed/live batches; charge the reserved failure item/bytes. Discard uncommitted staging and keep only the last committed cursor. Never omit pending permissions/policy, truncate exact intent bytes or loop PARTIAL/Reset. Same-budget automatic retries are forbidden. Default UNSPECIFIED retains oldest-first paging and WindowChanged resets when a non-exhausted page changes. In LATEST, new positions append after the fixed initial selection; they MUST NOT trigger WindowChanged merely because more than timeline_limit records now exist. A genuine loss of continuity or removal may still reset the stream.
timeline_limit: u32Number of latest timeline records to include in the initial snapshot. Valid only with timeline_start = TIMELINE_START_LATEST; otherwise zero.
ObserveOptions.after_cursor is a stream resume cursor, never a page token. It is bound to timeline_start, timeline_limit and the run filter. Successful after_cursor resume delivers the retained initial remainder before following later positions, without selecting a new latest N; if replay or the fixed boundary/remainder is unavailable, or a genuine removal loses continuity, the server sends a terminal reset. Recheck live authorization at each handoff. The client reconnects without after_cursor to start a replacement latest snapshot. PageRequest.after_page is invalid in LATEST mode.
Implementations§
Source§impl ObserveRunsRequest
impl ObserveRunsRequest
Sourcepub fn timeline_start(&self) -> TimelineStart
pub fn timeline_start(&self) -> TimelineStart
Returns the enum value of timeline_start, or the default if the field is set to an invalid enum value.
Sourcepub fn set_timeline_start(&mut self, value: TimelineStart)
pub fn set_timeline_start(&mut self, value: TimelineStart)
Sets timeline_start to the provided enum value.
Trait Implementations§
Source§impl Clone for ObserveRunsRequest
impl Clone for ObserveRunsRequest
Source§fn clone(&self) -> ObserveRunsRequest
fn clone(&self) -> ObserveRunsRequest
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ObserveRunsRequest
impl Debug for ObserveRunsRequest
Source§impl Default for ObserveRunsRequest
impl Default for ObserveRunsRequest
Source§fn default() -> ObserveRunsRequest
fn default() -> ObserveRunsRequest
Source§impl Message for ObserveRunsRequest
impl Message for ObserveRunsRequest
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self. Read moreSource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self.Source§impl ObservationRequest for ObserveRunsRequest
impl ObservationRequest for ObserveRunsRequest
fn options_mut(&mut self) -> &mut ObserveOptions
Source§impl PartialEq for ObserveRunsRequest
impl PartialEq for ObserveRunsRequest
impl StructuralPartialEq for ObserveRunsRequest
Auto Trait Implementations§
impl Freeze for ObserveRunsRequest
impl RefUnwindSafe for ObserveRunsRequest
impl Send for ObserveRunsRequest
impl Sync for ObserveRunsRequest
impl Unpin for ObserveRunsRequest
impl UnsafeUnpin for ObserveRunsRequest
impl UnwindSafe for ObserveRunsRequest
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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