Skip to main content

ManualWorker

Struct ManualWorker 

Source
pub struct ManualWorker { /* private fields */ }
Expand description

Manual single-step worker for tests (no background task).

Use BosonBuilder::build_manual to obtain one alongside Boson. Call try_run_next to claim and execute at most one queued job — useful in unit tests and the task_macro example.

§Example

use std::sync::Arc;

use boson_backend_mem::MemQueueBackend;
use boson_core::{ExecutionContext, JsonExecutionContextFactory};
use boson_macros::task;
use boson_runtime::{configure, Boson, ManualWorker};

#[task(name = "ping")]
async fn ping(_ctx: Box<dyn ExecutionContext>) -> boson_core::Result<()> {
    Ok(())
}

let (boson, manual) = Boson::builder()
    .queue_backend(Arc::new(MemQueueBackend::new()))
    .execution_context_factory(JsonExecutionContextFactory)
    .auto_registry()
    .build_manual()?;
configure(boson);

Ping::send_with(serde_json::json!({"System": {}}), PingParams {}).await?;
assert!(manual.try_run_next().await); // runs the handler once

Implementations§

Source§

impl ManualWorker

Source

pub fn new( backend: Arc<dyn QueueBackend>, registry: Arc<TaskRegistry>, identity: Arc<dyn ExecutionContextFactory>, worker: WorkerSettings, ) -> Self

Create a worker that can be driven step-by-step in tests.

Source

pub async fn try_run_next(&self) -> bool

Process at most one job across all pools.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.