Skip to main content

WorkerBuilder

Struct WorkerBuilder 

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

Builder pattern for constructing and spawning a worker runtime.

A WorkerBuilder allows you to register multiple SharedObjects under a given name, and then spawn a worker that connects to an RPC broker and handles incoming requests.

§Example

ⓘ
struct Calculator;

#[async_trait]
impl SharedObject for Calculator {
    async fn call(&self, method: &str, args: &Value) -> Value {
        match method {
            "add" => {
                let a = args["a"].as_i64().unwrap();
                let b = args["b"].as_i64().unwrap();
                Value::from(a + b)
            }
            _ => Value::Null,
        }
    }
}

WorkerBuilder::new()
    .add("Calculator", Calculator)
    .spawn()
    .await
    .unwrap();

Implementations§

Source§

impl WorkerBuilder

Source

pub fn new() -> Self

Create a new, empty worker builder.

Source

pub fn add<T>(self, name: &str, obj: T) -> Self
where T: SharedObject + 'static,

Add a named object to the worker.

§Arguments
  • name - The name under which this object will be registered.
  • obj - The object implementing SharedObject.
§Returns

Updated WorkerBuilder so calls can be chained.

Source

pub fn with_graceful_shutdown(self) -> (Self, Sender<bool>)

Source

pub async fn spawn(self) -> Result<()>

Spawn the worker runtime with all registered objects.

This connects to the broker (via TCP, Unix socket, or Windows named pipe depending on platform and environment) and begins handling RPC requests.

Trait Implementations§

Source§

impl Default for WorkerBuilder

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

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 = !

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

fn try_from(value: U) -> Result<T, !>

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.