wasmbus_rpc::rpc_client

Struct RpcClient

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

Send wasmbus rpc messages

The primary use of RpcClient is providers sending to actors, however providers don’t need to construct this - one is created by HostBridge, which providers create during initialization.

This class is also used by wash and test tools for sending rpc messages to actors and providers. Note that sending to a provider requires an existing link definition, and, the message needs to be signed by a valid cluster key.

This RpcClient does not subscribe to rpc topics. To subscribe, use the nats client api directly.

Implementations§

Source§

impl RpcClient

Source

pub fn new( nats: Client, host_id: String, timeout: Option<Duration>, key_pair: Arc<KeyPair>, ) -> Self

Constructs a new RpcClient with an async nats connection. parameters: async nats client, rpc timeout secret key for signing messages, host_id, and optional timeout.

Source

pub fn client(&self) -> Client

convenience method for returning async client

Source

pub fn set_timeout(&mut self, timeout: Option<Duration>)

Replace the default timeout with the specified value. If the parameter is None, unsets the default timeout

Source

pub async fn send_json<Target, Resp>( &self, origin: WasmCloudEntity, target: Target, lattice: &str, method: &str, data: JsonValue, ) -> RpcResult<JsonValue>

Send an rpc message using json-encoded data

Source

pub async fn send<Target>( &self, origin: WasmCloudEntity, target: Target, lattice: &str, message: Message<'_>, ) -> RpcResult<Vec<u8>>
where Target: Into<WasmCloudEntity>,

Send a wasmbus rpc message by wrapping with an Invocation before sending over nats. ‘target’ may be &str or String for sending to an actor, or a WasmCloudEntity (for actor or provider) If a response is not received within the default timeout, the Error RpcError::Timeout is returned. If the client timeout has been set, this call is equivalent to send_timeout passing in the default timeout.

Source

pub async fn send_timeout<Target>( &self, origin: WasmCloudEntity, target: Target, lattice: &str, message: Message<'_>, timeout: Duration, ) -> RpcResult<Vec<u8>>
where Target: Into<WasmCloudEntity>,

Send a wasmbus rpc message, with a timeout. The rpc message is wrapped with an Invocation before sending over nats. ‘target’ may be &str or String for sending to an actor, or a WasmCloudEntity (for actor or provider) If the timeout expires before the response is received, this returns Error RpcError::Timeout.

Source

pub async fn request( &self, subject: String, payload: Vec<u8>, ) -> RpcResult<Vec<u8>>

Send a nats message and wait for the response. This can be used for general nats messages, not just wasmbus actor/provider messages. If this client has a default timeout, and a response is not received within the appropriate time, an error will be returned.

Source

pub async fn publish(&self, subject: String, payload: Vec<u8>) -> RpcResult<()>

Send a nats message with no reply-to. Do not wait for a response. This can be used for general nats messages, not just wasmbus actor/provider messages.

Source

pub async fn publish_invocation_response( &self, reply_to: String, response: InvocationResponse, lattice: &str, ) -> RpcResult<()>

Source

pub async fn dechunk( &self, inv: Invocation, lattice: &str, ) -> RpcResult<Invocation>

Source

pub async fn validate_invocation( &self, inv: Invocation, ) -> Result<(Invocation, Claims<Invocation>), String>

Initial validation of received message. See provider::validate_provider_invocation for second part.

Trait Implementations§

Source§

impl Clone for RpcClient

Source§

fn clone(&self) -> RpcClient

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RpcClient

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. 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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T