libcaf  0.15.3
Public Types | Public Member Functions | List of all members
caf::forwarding_actor_proxy Class Reference

Implements a simple proxy forwarding all operations to a manager. More...

#include <forwarding_actor_proxy.hpp>

Inheritance diagram for caf::forwarding_actor_proxy:
caf::actor_proxy caf::monitorable_actor caf::abstract_actor caf::abstract_channel

Public Types

using forwarding_stack = std::vector< strong_actor_ptr >
 

Public Member Functions

 forwarding_actor_proxy (actor_config &cfg, actor mgr)
 
void enqueue (mailbox_element_ptr what, execution_unit *host) override
 Enqueues a new message wrapped in a mailbox_element to the actor. More...
 
bool link_impl (linking_operation op, abstract_actor *other) override
 
void local_link_to (abstract_actor *other) override
 Establishes a local link state that's not synchronized back to the remote instance. More...
 
void local_unlink_from (abstract_actor *other) override
 Removes a local link state.
 
void kill_proxy (execution_unit *ctx, error rsn) override
 Invokes cleanup code.
 
actor manager () const
 
void manager (actor new_manager)
 
- Public Member Functions inherited from caf::actor_proxy
 actor_proxy (actor_config &cfg)
 
- Public Member Functions inherited from caf::monitorable_actor
virtual const char * name () const
 Returns an implementation-dependent name for logging purposes, which is only valid as long as the actor is running. More...
 
void attach (attachable_ptr ptr) override
 Attaches ptr to this actor. More...
 
size_t detach (const attachable::token &what) override
 Detaches the first attached object that matches what.
 
void link_to (const actor_addr &x)
 Links this actor to x.
 
template<class ActorHandle >
void link_to (const ActorHandle &x)
 Links this actor to x.
 
void unlink_from (const actor_addr &x)
 Unlinks this actor from x.
 
template<class ActorHandle >
void unlink_from (const ActorHandle &x)
 Links this actor to x.
 
- Public Member Functions inherited from caf::abstract_actor
void * operator new (std::size_t, void *ptr)
 
actor_control_blockctrl () const
 
virtual void on_destroy ()
 Cleans up any remaining state before the destructor is called. More...
 
void enqueue (strong_actor_ptr sender, message_id mid, message msg, execution_unit *host) override
 Enqueues a new message without forwarding stack to the channel.
 
template<class F >
void attach_functor (F f)
 Convenience function that attaches the functor f to this actor. More...
 
actor_addr address () const
 Returns the logical actor address.
 
bool establish_backlink (abstract_actor *x)
 Establishes a link relation between this actor and x and returns whether the operation succeeded. More...
 
bool remove_backlink (abstract_actor *x)
 Removes the link relation between this actor and x and returns whether the operation succeeded. More...
 
virtual std::set< std::string > message_types () const
 Returns the set of accepted messages types as strings or an empty set if this actor is untyped. More...
 
actor_id id () const noexcept
 Returns the ID of this actor.
 
node_id node () const noexcept
 Returns the node this actor is living on.
 
actor_systemhome_system () const noexcept
 Returns the system that created this actor (or proxy).
 
- Public Member Functions inherited from caf::abstract_channel
bool is_abstract_actor () const
 
bool is_abstract_group () const
 
bool is_actor_decorator () const
 

Additional Inherited Members

- Static Public Attributes inherited from caf::abstract_channel
static constexpr int is_abstract_actor_flag = 0x01000000
 
static constexpr int is_abstract_group_flag = 0x02000000
 
static constexpr int is_actor_bind_decorator_flag = 0x04000000
 
static constexpr int is_actor_dot_decorator_flag = 0x08000000
 
static constexpr int is_actor_decorator_mask = 0x0C000000
 
- Protected Member Functions inherited from caf::monitorable_actor
virtual void on_cleanup ()
 Allows subclasses to add additional cleanup code to the critical secion in cleanup. More...
 
void bounce (mailbox_element_ptr &what)
 Sends a response message if what is a request.
 
void bounce (mailbox_element_ptr &what, const error &err)
 Sends a response message if what is a request.
 
 monitorable_actor (actor_config &cfg)
 Creates a new actor instance.
 
bool link_impl (linking_operation op, abstract_actor *other) override
 
bool establish_link_impl (abstract_actor *x)
 
bool remove_link_impl (abstract_actor *x)
 
bool establish_backlink_impl (abstract_actor *x)
 
bool remove_backlink_impl (abstract_actor *x)
 
void attach_impl (attachable_ptr &ptr)
 
bool handle_system_message (mailbox_element &x, execution_unit *ctx, bool trap_exit)
 
template<class F >
bool handle_system_message (mailbox_element &x, execution_unit *context, bool trap_exit, F &down_msg_handler)
 
template<class F >
auto exclusive_critical_section (F fun) -> decltype(fun())
 
template<class F >
auto shared_critical_section (F fun) -> decltype(fun())
 
- Protected Member Functions inherited from caf::abstract_actor
 abstract_actor (actor_config &cfg)
 Creates a new actor instance.
 
- Protected Member Functions inherited from caf::abstract_channel
int flags () const
 
void flags (int new_value)
 
- Static Protected Member Functions inherited from caf::monitorable_actor
static size_t detach_impl (const attachable::token &what, attachable_ptr &ptr, bool stop_on_hit=false, bool dry_run=false)
 
- Protected Attributes inherited from caf::monitorable_actor
error fail_state_
 
std::mutex mtx_
 
std::condition_variable cv_
 
attachable_ptr attachables_head_
 

Detailed Description

Implements a simple proxy forwarding all operations to a manager.

Member Function Documentation

void caf::forwarding_actor_proxy::enqueue ( mailbox_element_ptr  what,
execution_unit host 
)
overridevirtual

Enqueues a new message wrapped in a mailbox_element to the actor.

This enqueue variant allows to define forwarding chains.

Implements caf::abstract_actor.

void caf::forwarding_actor_proxy::local_link_to ( abstract_actor other)
overridevirtual

Establishes a local link state that's not synchronized back to the remote instance.

Implements caf::actor_proxy.


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