Skip to main content

Store

Struct Store 

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

Handle to the storage engine.

Cheap to clone (sender + Arc internally). The proxy holds one, and CLI query commands can open their own read-only connections separately.

Implementations§

Source§

impl Store

Source

pub fn open(config: StoreConfig) -> Result<Self, StoreError>

Open or create the database, run migrations, and spawn the writer thread.

This is called once on proxy startup. It:

  1. Creates the parent directory if needed.
  2. Opens a read-write connection and runs schema migrations.
  3. Spawns the background writer on a dedicated OS thread.
  4. Returns a Store handle for recording events.
§Errors

Returns an error if:

  • The parent directory can’t be created (permissions).
  • SQLite can’t open the file (disk full, corrupt file).
  • Schema migrations fail (shouldn’t happen on fresh DBs).
Source

pub fn record(&self, event: StoreEvent)

Record an event — non-blocking, fire-and-forget.

If the channel is full (back-pressure), the event is silently dropped. This is intentional: a busy proxy must never block on storage writes. Dropped events are a signal that the writer can’t keep up — in practice this should never happen at normal MCP request rates.

Source

pub fn db_path(&self) -> &PathBuf

Get the database path for opening read-only query connections.

Source

pub fn shutdown(&mut self)

Graceful shutdown — close the channel and wait for the writer to flush.

Call this on proxy shutdown (after stopping new requests, before exiting). Blocks the current thread until all pending events are written to SQLite.

After this returns, the database file is consistent and safe to read.

Trait Implementations§

Source§

impl Drop for Store

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl Freeze for Store

§

impl !RefUnwindSafe for Store

§

impl Send for Store

§

impl Sync for Store

§

impl Unpin for Store

§

impl UnsafeUnpin for Store

§

impl !UnwindSafe for Store

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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. 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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,