pub struct WriterHandle { /* private fields */ }Expand description
Cheap handle to the writer task. Clones share the same underlying
mpsc channel; a drop of the last clone is a silent shutdown signal
to the writer task (receiver closes). For a clean shutdown that
releases the lease row, call WriterHandle::shutdown.
Implementations§
Source§impl WriterHandle
impl WriterHandle
Sourcepub async fn apply_label(&self, req: ApplyLabelRequest) -> Result<LabelEvent>
pub async fn apply_label(&self, req: ApplyLabelRequest) -> Result<LabelEvent>
Submit an apply-label request. Resolves when the writer has
committed the transaction and broadcast the event, or returns an
Err describing why the write was rejected.
Sourcepub async fn negate_label(&self, req: NegateLabelRequest) -> Result<LabelEvent>
pub async fn negate_label(&self, req: NegateLabelRequest) -> Result<LabelEvent>
Submit a negate-label request. Returns Error::LabelNotFound if
no applied label currently exists for (service_did, uri, val).
Sourcepub async fn resolve_report(
&self,
req: ResolveReportRequest,
) -> Result<ResolvedReport>
pub async fn resolve_report( &self, req: ResolveReportRequest, ) -> Result<ResolvedReport>
Resolve a report, optionally applying a label in the same atomic transaction. The label INSERT + audit row + report UPDATE + resolution audit row all commit together or not at all; the label broadcast fires post-commit inside the writer task (§F5 + §F12 atomicity contract).
Errors:
Error::ReportNotFound—report_iddoesn’t exist.Error::ReportAlreadyResolved— report is not in thependingstate. Handler maps to a genericInvalidRequest.
Sourcepub async fn sweep(&self, _req: SweepRequest) -> Result<SweepResult>
pub async fn sweep(&self, _req: SweepRequest) -> Result<SweepResult>
Trigger a §F4 retention sweep through the writer task. Loops
over single-batch dispatches until a batch returns
has_more = false, aggregating rows + duration.
Other writer commands interleave between batches (single-writer
invariant + bounded latency).
Returns rows_deleted = 0, batches = 0 when the writer was
spawned with retention_days = None (sweep configured off):
the first batch returns immediately and the loop exits with
the no-op result.
Sourcepub fn subscribe(&self) -> Receiver<LabelEvent>
pub fn subscribe(&self) -> Receiver<LabelEvent>
Subscribe to committed events. The returned receiver lags past
the internal broadcast buffer; the consumer (subscribeLabels, #7)
turns RecvError::Lagged into a connection close.
Sourcepub fn receiver_count(&self) -> usize
pub fn receiver_count(&self) -> usize
Count of live broadcast receivers. Exposed for test sync points
(the WS handler subscribes asynchronously after upgrade; tests
that want to emit an event “after the subscriber is ready” poll
this until it reaches the expected count). Not a production hot
path — broadcast::Sender::receiver_count walks an atomic chain.
Sourcepub fn shutdown_signal(&self) -> Receiver<bool>
pub fn shutdown_signal(&self) -> Receiver<bool>
Observe writer lifecycle. The returned receiver starts at false
and flips to true once exactly, when the writer has accepted a
shutdown command and is about to release the lease. Holders close
downstream connections gracefully on the true transition.
Trait Implementations§
Source§impl Clone for WriterHandle
impl Clone for WriterHandle
Source§fn clone(&self) -> WriterHandle
fn clone(&self) -> WriterHandle
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for WriterHandle
impl !RefUnwindSafe for WriterHandle
impl Send for WriterHandle
impl Sync for WriterHandle
impl Unpin for WriterHandle
impl UnsafeUnpin for WriterHandle
impl !UnwindSafe for WriterHandle
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
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 moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);