Skip to main content

Daemon

Struct Daemon 

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

What a connection needs to answer the sealed surface.

Implementations§

Source§

impl Daemon

Source

pub fn new(store: PgEventStore, public_revision: String) -> Result<Self>

public_revision is the build’s own 40-hex revision, which status reports so a client can compare a running daemon against the one genesis recorded. It is required rather than defaulted: a daemon that reported a placeholder would make that comparison answer “same” for two different builds.

The writer epoch is READ OFF the store rather than passed in, because there is exactly one way to obtain one — claim_epoch, which BUMPS the durable counter — and the store already did it when it opened. A caller handed this as a parameter would have had to claim a second time, and a second claim is not a second opinion about the epoch: it supersedes the first, so the store this daemon is about to serve from would be fenced out of its own log by the daemon in front of it. A blob store is likewise required rather than optional. A store without one is a real state — admin init and the certifier drive the log with no filesystem at all — but a SERVING kernel in that state would answer every blob request with a refusal that says nothing about the request, and the operator would find out from a client rather than from a start-up that failed.

Source

pub fn notify_on_append(&self)

Start the listener that turns database notifications into wake-ups.

Separate from Daemon::new because it spawns, and a constructor that needed a running runtime to exist would be a trap for any caller that builds a daemon before starting one. A daemon that never calls this still serves subscriptions correctly — every one of them re-reads on SUBSCRIPTION_POLL_SECS regardless — at poll latency instead of notification latency.

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<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> 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<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