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§
Sourcetype Output: Any + Send
type Output: Any + Send
Output of the task.
Returned in Self::process_tagged
.
Required Methods§
Sourcefn command_body(&self) -> CommandBody<'static>
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
.
Sourcefn process_tagged(self, status_body: StatusBody<'static>) -> Self::Output
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§
Sourcefn process_data(&mut self, data: Data<'static>) -> Option<Data<'static>>
fn process_data(&mut self, data: Data<'static>) -> Option<Data<'static>>
Process data response.
Sourcefn process_untagged(
&mut self,
status_body: StatusBody<'static>,
) -> Option<StatusBody<'static>>
fn process_untagged( &mut self, status_body: StatusBody<'static>, ) -> Option<StatusBody<'static>>
Process untagged response.
Sourcefn process_continuation_request(
&mut self,
continuation: CommandContinuationRequest<'static>,
) -> Option<CommandContinuationRequest<'static>>
fn process_continuation_request( &mut self, continuation: CommandContinuationRequest<'static>, ) -> Option<CommandContinuationRequest<'static>>
Process command continuation request response.
Sourcefn process_continuation_request_authenticate(
&mut self,
continuation: CommandContinuationRequest<'static>,
) -> Result<AuthenticateData<'static>, CommandContinuationRequest<'static>>
fn process_continuation_request_authenticate( &mut self, continuation: CommandContinuationRequest<'static>, ) -> Result<AuthenticateData<'static>, CommandContinuationRequest<'static>>
Process command continuation request response (during authenticate).
Sourcefn process_bye(&mut self, bye: Bye<'static>) -> Option<Bye<'static>>
fn process_bye(&mut self, bye: Bye<'static>) -> Option<Bye<'static>>
Process bye response.