Struct jupiter::commands::CommandDictionary
source · pub struct CommandDictionary { /* private fields */ }
Expand description
Represents an internally mutable dictionary which maps commands to queues.
A command dictionary is used by the server to keep track of all known commands and to determine which queue is used to handle a certain command.
Note that the dictionary itself isn’t used to actually dispatch a command. This is the job of the Dispatcher which is a readonly copy of the dictionary which can be used without any synchronization overhead.
Implementations§
source§impl CommandDictionary
impl CommandDictionary
sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new and empty dictionary.
Note that most probably a dictionary is already present and can be obtained from the Platform:
let commands = platform.require::<CommandDictionary>();
sourcepub fn install(platform: &Arc<Platform>) -> Arc<Self>
pub fn install(platform: &Arc<Platform>) -> Arc<Self>
Creates and installs the default dictionary into the given Platform.
Note that this is automatically performed by the Builder unless disabled.
sourcepub fn register_command(&self, name: &'static str, queue: Queue, token: usize)
pub fn register_command(&self, name: &'static str, queue: Queue, token: usize)
Registers a command for the given name to be dispatched into the given queue.
As most probably multiple commands are dispatched to a single queue, their calls can be disambiguated by using the given token.
§Example
let (queue, mut endpoint) = queue();
// Attach an actor to the endpoint of the queue...
// jupiter::spawn!(...)
// Register the command...
let commands = CommandDictionary::new();
commands.register_command("PING", queue, 0);
sourcepub fn commands(&self) -> Vec<Arc<Command>>
pub fn commands(&self) -> Vec<Arc<Command>>
Reports the usage metrics (and names) of all known commands.
sourcepub fn dispatcher(&self) -> Dispatcher
pub fn dispatcher(&self) -> Dispatcher
Creates a readonly copy of the known commands and returns them as dispatcher.
Trait Implementations§
source§impl Default for CommandDictionary
impl Default for CommandDictionary
source§fn default() -> CommandDictionary
fn default() -> CommandDictionary
Auto Trait Implementations§
impl !Freeze for CommandDictionary
impl RefUnwindSafe for CommandDictionary
impl Send for CommandDictionary
impl Sync for CommandDictionary
impl Unpin for CommandDictionary
impl UnwindSafe for CommandDictionary
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more