HashMapActor

Struct HashMapActor 

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

An implementation of ExpiryStore based on async actix actors and HashMap

It relies on tokio’s DelayQueue internally to manage expiration, and it doesn’t have any lock as it runs in single threaded async arbiter.

§Example

use actix_storage::Storage;
use actix_storage_hashmap::HashMapActor;
use actix_web::{App, HttpServer};

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    let store = HashMapActor::start_default();
    // OR
    let store = HashMapActor::with_capacity(100).start();

    let storage = Storage::build().expiry_store(store).finish();
    let server = HttpServer::new(move || {
        App::new()
            .data(storage.clone())
    });
    server.bind("localhost:5000")?.run().await
}

requires [“actor”] feature

Implementations§

Source§

impl HashMapActor

Source

pub fn new() -> Self

Makes a new HashMapActor without starting it

Source

pub fn with_capacity(capacity: usize) -> Self

Makes a new HashMapActor with specified HashMap capacity without starting it

Source

pub fn with_channel_size(input_buffer: usize, output_buffer: usize) -> Self

Makes a new HashMapActor with specified channel capacity without starting it

Buffer sizes are used for internal expiry channel provider, input is for the channel providing commands expire/extend/expiry/persist and output is the other channel that sends back expired items.

Source

pub fn with_capacity_and_channel_size( capacity: usize, input_buffer: usize, output_buffer: usize, ) -> Self

Makes a new HashMapActor with specified HashMap and channel capacity without starting it

Buffer sizes are used for internal expiry channel provider, input is for the channel providing commands expire/extend/expiry/persist and output is the other channel that sends back expired items.

Source

pub fn start(self) -> Addr<Self>

Equivalent of actix::Actor::start for when actix::Actor is not in scope

Source

pub fn start_default() -> Addr<Self>

Equivalent of actix::Actor::start_default for when actix::Actor is not in scope

Trait Implementations§

Source§

impl Actor for HashMapActor

Source§

type Context = Context<HashMapActor>

Actor execution context type
Source§

fn started(&mut self, ctx: &mut Self::Context)

Called when an actor gets polled the first time.
Source§

fn stopping(&mut self, ctx: &mut Self::Context) -> Running

Called after an actor is in Actor::Stopping state. Read more
Source§

fn stopped(&mut self, ctx: &mut Self::Context)

Called after an actor is stopped. Read more
Source§

fn start(self) -> Addr<Self>
where Self: Actor<Context = Context<Self>>,

Start a new asynchronous actor, returning its address. Read more
Source§

fn start_default() -> Addr<Self>
where Self: Actor<Context = Context<Self>> + Default,

Construct and start a new asynchronous actor, returning its address. Read more
Source§

fn start_in_arbiter<F>(wrk: &ArbiterHandle, f: F) -> Addr<Self>
where Self: Actor<Context = Context<Self>>, F: FnOnce(&mut Context<Self>) -> Self + Send + 'static,

Start new actor in arbiter’s thread.
Source§

fn create<F>(f: F) -> Addr<Self>
where Self: Actor<Context = Context<Self>>, F: FnOnce(&mut Context<Self>) -> Self,

Start a new asynchronous actor given a Context. Read more
Source§

impl Debug for HashMapActor

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for HashMapActor

Source§

fn default() -> Self

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

impl Handler<ExpiryRequest> for HashMapActor

Source§

type Result = Pin<Box<dyn ActorFuture<HashMapActor, Output = ExpiryResponse>>>

The type of value that this handler will return. Read more
Source§

fn handle(&mut self, msg: ExpiryRequest, _: &mut Self::Context) -> Self::Result

This method is called for every message received by this actor.
Source§

impl Handler<ExpiryStoreRequest> for HashMapActor

Source§

type Result = Pin<Box<dyn ActorFuture<HashMapActor, Output = ExpiryStoreResponse>>>

The type of value that this handler will return. Read more
Source§

fn handle( &mut self, msg: ExpiryStoreRequest, _: &mut Self::Context, ) -> Self::Result

This method is called for every message received by this actor.
Source§

impl Handler<StoreRequest> for HashMapActor

Source§

type Result = Pin<Box<dyn ActorFuture<HashMapActor, Output = StoreResponse>>>

The type of value that this handler will return. Read more
Source§

fn handle(&mut self, msg: StoreRequest, ctx: &mut Self::Context) -> Self::Result

This method is called for every message received by this actor.

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