Struct LogPage
pub struct LogPage {
pub events: Vec<LogEvent>,
pub next_cursor: Option<(String, String)>,
pub next_cursor_line_offset: Option<u64>,
pub next_segment_cursor: Option<String>,
pub at_end: bool,
pub incomplete: bool,
}Expand description
One page returned by load_page.
Fields§
§events: Vec<LogEvent>§next_cursor: Option<(String, String)>tie-breaks by lexicographic id and can silently drop events; use next_cursor_line_offset / until_line_offset instead. Removal tracked in zeroclaw-labs/zeroclaw#8012.
next_cursor_line_offset: Option<u64>Byte offset past the OLDEST event on this page (the event in
file order that is earliest among this page’s matches). Pass
back as LogFilter::until_line_offset on the next request to
walk older pages. None when the page is empty.
For multi-segment deployments, this is None when the oldest event is
in an archive file rather than the active file; use
Self::next_segment_cursor in that case.
next_segment_cursor: Option<String>Segment-aware cursor for the oldest event on this page. Pass back as
?until_segment_cursor= on the next request to walk older pages across
segment boundaries. Supersedes next_cursor_line_offset for
multi-segment deployments. None when the page is empty.
at_end: boolTrue when the file was fully scanned. UI uses this to disable “load older” affordances.
incomplete: boolTrue when a retained segment could not be read and was left out.
The page is still returned: one unreadable archive should not cost the
caller every other segment. But it makes at_end non-authoritative —
it then means “no older events among the segments that could be read”,
which is not the same as “no older events exist”. A caller that stops
paging on at_end should surface this rather than present the result
as the complete history.
The daemon also logs each skipped segment, but a log line reaches the operator while this reaches the caller that has to decide what to do.
Defaulted on deserialize so a page from an older daemon still parses.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for LogPage
impl<'de> Deserialize<'de> for LogPage
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<LogPage, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<LogPage, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Serialize for LogPage
impl Serialize for LogPage
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Auto Trait Implementations§
impl Freeze for LogPage
impl RefUnwindSafe for LogPage
impl Send for LogPage
impl Sync for LogPage
impl Unpin for LogPage
impl UnsafeUnpin for LogPage
impl UnwindSafe for LogPage
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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