Enum svc_agent::Destination[][src]

pub enum Destination {
    Broadcast(String),
    Multicast(AccountIdString),
    Unicast(AgentIdString),
}
Expand description

Message destination.

This is an abstraction over MQTT topic pattern to determine outgoing message’s publish topic.

Understanding message routing is the key thing to use svc-agent. Make sure that you understand the patterns below and their counterparts described in Source.

MQTT topic variables:

  • MY_ACCOUNT_IDAccountId of the current agent that sends the message.
  • MY_VER – API version string of the current agent. For example: v1.
  • MY_BROADCAST_URI– current agent’s API specific path to some resource divided by /. For example: /rooms/ROOM_ID/events. If you will want to change its structure in the future you must also bump VER(ME).
  • ACCOUNT_ID – destination AccountId (no specific agent).
  • AGENT_ID – destination AgentId.
  • VER – destination agent version.

Variants

Broadcast(String)

Publish a message to each of the topic subscribers.

Typically being used for publishing notification events from a service.

The string supplied is MY_BROADCAST_URI.

Patterns

TypePatternMQTT topic
eventapp-to-anyapps/MY_ACCOUNT_ID/api/MY_VER/MY_BROADCAST_URI
Multicast(AccountIdString)

Publish a message to any single of SharedGroup agents.

Typically being used for sending requests to services which may have multiple instances.

AccountId is being supplied since we don’t care which specific instance will process the message.

Patterns

TypePatternMQTT topic
requestone-to_appagents/MY_AGENT_ID/api/MY_VER/out/ACCOUNT_ID
Unicast(AgentIdString)

Publish a message to the specific instance with known AGENT_ID.

Typically being used for responding to requests. Also used for making a request to a specific instance of a stateful service.

Values supplied are AGENT_ID and VER.

Patterns

TypePatternMQTT topic
requestone-to-oneagents/AGENT_ID/api/VER/in/MY_ACCOUNT_ID
responseone-to_oneagents/AGENT_ID/api/VER/in/MY_ACCOUNT_ID

Trait Implementations

impl Debug for Destination[src]

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

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

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

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

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

Performs the conversion.