[][src]Trait spartan_lib::core::dispatcher::StatusAwareDispatcher

pub trait StatusAwareDispatcher<M>: SimpleDispatcher<M> where
    M: Status
{ pub fn pop(&mut self) -> Option<&M>;
pub fn requeue(&mut self, id: <M as Identifiable>::Id) -> Option<()>; }

Interface for working with databases that support statuses

Required methods

pub fn pop(&mut self) -> Option<&M>[src]

Pop message from queue

Behaves like "peek", but with "obtainable" message check, message and database reservation

use spartan_lib::core::dispatcher::{SimpleDispatcher, StatusAwareDispatcher};
use spartan_lib::core::db::TreeDatabase;
use spartan_lib::core::message::builder::MessageBuilder;
use spartan_lib::core::payload::Identifiable;

let mut db = TreeDatabase::default();
let message = MessageBuilder::default().body("Hello, world").compose().unwrap();

db.push(message.clone());

assert_eq!(db.pop().unwrap().id(), message.id());

pub fn requeue(&mut self, id: <M as Identifiable>::Id) -> Option<()>[src]

Requeue message in queue

Returns None, if message was not found, or message cannot be requeued

use spartan_lib::core::dispatcher::{SimpleDispatcher, StatusAwareDispatcher};
use spartan_lib::core::db::TreeDatabase;
use spartan_lib::core::message::builder::MessageBuilder;
use spartan_lib::core::payload::Identifiable;

let mut db = TreeDatabase::default();
let message = MessageBuilder::default().body("Hello, world").compose().unwrap();

db.push(message);

let id = db.pop().unwrap().id();
db.requeue(id).unwrap();
Loading content...

Implementors

impl<T, M> StatusAwareDispatcher<M> for T where
    T: SimpleDispatcher<M> + StatusAwareDatabase<M, RequeueKey = <M as Identifiable>::Id>,
    M: Status
[src]

Loading content...