rotor
Event loop friendly C++ actor micro-framework
 
Loading...
Searching...
No Matches
rotor::address_mapping_t Struct Reference

NAT mechanism for rotor More...

#include <address_mapping.h>

Public Member Functions

void set (actor_base_t &actor, const subscription_info_ptr_t &info) noexcept
 associates temporal destination point with actor's message type
 
address_ptr_t get_mapped_address (actor_base_t &actor, const void *) noexcept
 returns temporal destination address for the actor/message type
 
template<typename Fn >
void each_subscription (const actor_base_t &actor, Fn &&fn) const noexcept
 iterates on all subscriptions for an actor
 
bool has_subscriptions (const actor_base_t &actor) const noexcept
 checks whether an actor has any subscriptions
 
bool empty () const noexcept
 returns true if there is no any subscription for any actor
 
void remove (const subscription_point_t &point) noexcept
 forgets subscription point
 

Detailed Description

NAT mechanism for rotor

It plays the similar role as https://en.wikipedia.org/wiki/Network_address_translation in routers, i.e. the original message (request) is dispatched from different address then source actor. It's needed for supervising it.

The address_mapping_t does not hold the original reply address. That kind of mapping is done on per-request basis. The address_mapping_t performs only per-message-type mapping.

Member Function Documentation

◆ set()

void rotor::address_mapping_t::set ( actor_base_t actor,
const subscription_info_ptr_t info 
)
noexcept

associates temporal destination point with actor's message type

An actor is able to process message type identified by message. So, the temporal subscription point (handler and temporal address) will be associated with the actor/message type pair.

In the routing the temporal destination address is usually some supervisor's address.


The documentation for this struct was generated from the following file: