Trait Task

Source
pub trait Task: Send + 'static {
    type Output: Any + Send;

    // Required methods
    fn command_body(&self) -> CommandBody<'static>;
    fn process_tagged(self, status_body: StatusBody<'static>) -> Self::Output;

    // Provided methods
    fn process_data(&mut self, data: Data<'static>) -> Option<Data<'static>> { ... }
    fn process_untagged(
        &mut self,
        status_body: StatusBody<'static>,
    ) -> Option<StatusBody<'static>> { ... }
    fn process_continuation_request(
        &mut self,
        continuation: CommandContinuationRequest<'static>,
    ) -> Option<CommandContinuationRequest<'static>> { ... }
    fn process_continuation_request_authenticate(
        &mut self,
        continuation: CommandContinuationRequest<'static>,
    ) -> Result<AuthenticateData<'static>, CommandContinuationRequest<'static>> { ... }
    fn process_bye(&mut self, bye: Bye<'static>) -> Option<Bye<'static>> { ... }
}
Expand description

Tells how a specific IMAP Command is processed.

Most process_ trait methods consume interesting responses (returning None), and move out uninteresting responses (returning Some(...)).

If no active task is interested in a given response, we call this response “unsolicited”.

Required Associated Types§

Source

type Output: Any + Send

Output of the task.

Returned in Self::process_tagged.

Required Methods§

Source

fn command_body(&self) -> CommandBody<'static>

Returns the CommandBody to issue for this task.

Note: The Scheduler will tag the CommandBody creating a complete Command.

Source

fn process_tagged(self, status_body: StatusBody<'static>) -> Self::Output

Process command completion result response.

The Scheduler already chooses the corresponding response by tag.

Provided Methods§

Source

fn process_data(&mut self, data: Data<'static>) -> Option<Data<'static>>

Process data response.

Source

fn process_untagged( &mut self, status_body: StatusBody<'static>, ) -> Option<StatusBody<'static>>

Process untagged response.

Source

fn process_continuation_request( &mut self, continuation: CommandContinuationRequest<'static>, ) -> Option<CommandContinuationRequest<'static>>

Process command continuation request response.

Source

fn process_continuation_request_authenticate( &mut self, continuation: CommandContinuationRequest<'static>, ) -> Result<AuthenticateData<'static>, CommandContinuationRequest<'static>>

Process command continuation request response (during authenticate).

Source

fn process_bye(&mut self, bye: Bye<'static>) -> Option<Bye<'static>>

Process bye response.

Implementors§

Source§

impl Task for AppendTask

Source§

impl Task for PostAppendCheckTask

Source§

impl Task for PostAppendNoOpTask

Source§

impl Task for AppendUidTask

Source§

impl Task for AuthenticateTask

Source§

impl Task for CapabilityTask

Source§

impl Task for CheckTask

Source§

impl Task for CopyTask

Source§

impl Task for CreateTask

Source§

impl Task for DeleteTask

Source§

impl Task for EnableTask

Source§

impl Task for ExpungeTask

Source§

impl Task for FetchFirstTask

Source§

impl Task for FetchTask

Source§

impl Task for IdTask

Source§

type Output = Result<Option<Vec<(IString<'static>, NString<'static>)>>, TaskError>

Source§

impl Task for ListTask

Source§

impl Task for LoginTask

Source§

impl Task for LogoutTask

Source§

impl Task for MoveTask

Source§

impl Task for NoOpTask

Source§

impl Task for SearchTask

Source§

impl Task for SelectTask

Source§

impl Task for SortTask

Source§

impl Task for SilentStoreTask

Source§

impl Task for StoreTask

Source§

impl Task for ThreadTask