CacheBuilder

Struct CacheBuilder 

Source
pub struct CacheBuilder<B>
where B: Backend + Actor,
{ /* private fields */ }
Expand description

Cache actor configurator.

§Example

use actix::prelude::*;
use hitbox_actix::{Cache, RedisBackend, CacheError};

#[actix_rt::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let backend = RedisBackend::new()
        .await?
        .start();
    let cache = Cache::builder()
        .enable()
        .finish(backend)
        .start();
    Ok(())
}

Implementations§

Source§

impl<B> CacheBuilder<B>
where B: Backend,

Source

pub fn enable(self) -> Self

Enable interaction with cache backend. (Default value).

Source

pub fn disable(self) -> Self

Disable interaction with cache backend.

All messages sent to disabled Cache actor passed directly to an upstream actor.

Source

pub fn with_stale(self) -> Self

Enable stale cache mechanics. (Default value).

If CacheActor receives a stale value, it does not return it immediately. It polls data from upstream, and if the upstream returned an error, the CacheActor returns a stale value. If no error occurred in the upstream, then a fresh value is stored in the cache and returned.

Source

pub fn without_stale(self) -> Self

Disable stale cache mechanics.

Source

pub fn with_lock(self) -> Self

Enable cache lock mechanics.

Prevents multiple upstream requests for the same cache key in case of cache data is missing. Only the first request will produce an upstream request. The remaining requests wait for a first upstream response and return updated data. If with_stale is enabled the remaining requests don’t wait for an upstream response and return stale cache data if it exists.

Source

pub fn without_lock(self) -> Self

Disable cache lock mechanics. (Default value).

Source

pub fn finish(self, backend: Addr<B>) -> CacheActor<B>

Instantiate new Cache instance with current configuration and passed backend.

Backend is an Addr of actix Actor which implements Backend trait:

Trait Implementations§

Source§

impl<B> Default for CacheBuilder<B>
where B: Backend,

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<B> Freeze for CacheBuilder<B>

§

impl<B> RefUnwindSafe for CacheBuilder<B>
where B: RefUnwindSafe,

§

impl<B> Send for CacheBuilder<B>
where B: Send,

§

impl<B> Sync for CacheBuilder<B>
where B: Sync,

§

impl<B> Unpin for CacheBuilder<B>

§

impl<B> UnwindSafe for CacheBuilder<B>
where B: UnwindSafe,

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, 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<T> ErasedDestructor for T
where T: 'static,