[−][src]Trait spartan_lib::core::db::StatusAwareDatabase
Interface for working with databases, that support status interaction
Associated Types
type RequeueKey: Copy
[src]
Required methods
pub fn reserve(&mut self, position: Self::PositionKey) -> Option<&mut M>
[src]
Reserve message in database
Removes message from tree in TreeDatabase
, does nothing in VecDatabase
use spartan_lib::core::db::{Database, StatusAwareDatabase}; use spartan_lib::core::db::TreeDatabase; use spartan_lib::core::message::builder::MessageBuilder; use spartan_lib::core::payload::{Dispatchable, Status}; let mut db = TreeDatabase::default(); let message = MessageBuilder::default().body("Hello, world").compose().unwrap(); db.push_raw(message); let position = db.position(|msg| msg.reservable()).unwrap(); // reserve returns mutable reference to message, so we can call reserve on message too. let message = db.reserve(position).unwrap(); message.reserve();
pub fn requeue<F>(
&mut self,
position: Self::RequeueKey,
predicate: F
) -> Option<&mut M> where
F: Fn(&M) -> bool,
[src]
&mut self,
position: Self::RequeueKey,
predicate: F
) -> Option<&mut M> where
F: Fn(&M) -> bool,
Requeue message back to database
Returns message back to tree in TreeDatabase
, does nothing in VecDatabase
use spartan_lib::core::db::{Database, StatusAwareDatabase}; use spartan_lib::core::db::TreeDatabase; use spartan_lib::core::message::builder::MessageBuilder; use spartan_lib::core::payload::{Dispatchable, Status, Identifiable}; let mut db = TreeDatabase::default(); let message = MessageBuilder::default().body("Hello, world").compose().unwrap(); db.push_raw(message); let position = db.position(|msg| msg.reservable()).unwrap(); let message = db.reserve(position).unwrap(); message.reserve(); let id = message.id(); // requeue tries to find a message with provided id, and checks it for predicate let message = db.requeue(id, |msg| msg.requeueable()).unwrap(); message.requeue();
Implementors
impl<M> StatusAwareDatabase<M> for TreeDatabase<M> where
M: Identifiable + Sortable + Status,
<M as Identifiable>::Id: Hash,
[src]
M: Identifiable + Sortable + Status,
<M as Identifiable>::Id: Hash,
type RequeueKey = <M as Identifiable>::Id
pub fn reserve(&mut self, position: Self::PositionKey) -> Option<&mut M>
[src]
pub fn requeue<F>(
&mut self,
position: Self::RequeueKey,
predicate: F
) -> Option<&mut M> where
F: Fn(&M) -> bool,
[src]
&mut self,
position: Self::RequeueKey,
predicate: F
) -> Option<&mut M> where
F: Fn(&M) -> bool,
impl<M> StatusAwareDatabase<M> for VecDatabase<M> where
M: Identifiable,
[src]
M: Identifiable,
type RequeueKey = <M as Identifiable>::Id
pub fn reserve(&mut self, position: Self::PositionKey) -> Option<&mut M>
[src]
pub fn requeue<F>(
&mut self,
position: Self::RequeueKey,
predicate: F
) -> Option<&mut M> where
F: Fn(&M) -> bool,
[src]
&mut self,
position: Self::RequeueKey,
predicate: F
) -> Option<&mut M> where
F: Fn(&M) -> bool,