C++ Actor Framework 0.18
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | Related Functions | List of all members
caf::abstract_actor Class Referenceabstract

Base class for all actor implementations. More...

#include <abstract_actor.hpp>

Inheritance diagram for caf::abstract_actor:
caf::abstract_channel caf::monitorable_actor caf::actor_pool caf::actor_proxy caf::decorator::sequencer caf::decorator::splitter caf::local_actor caf::forwarding_actor_proxy caf::actor_companion caf::blocking_actor caf::io::typed_broker< Sigs > caf::typed_event_based_actor< Sigs >

Public Member Functions

actor_control_blockctrl () const
 
 abstract_actor (const abstract_actor &)=delete
 
abstract_actoroperator= (const abstract_actor &)=delete
 
virtual void on_destroy ()
 Cleans up any remaining state before the destructor is called.
 
bool enqueue (strong_actor_ptr sender, message_id mid, message msg, execution_unit *host) override
 Enqueues a new message without forwarding stack to the channel.
 
virtual bool enqueue (mailbox_element_ptr what, execution_unit *host)=0
 Enqueues a new message wrapped in a mailbox_element to the actor.
 
virtual void attach (attachable_ptr ptr)=0
 Attaches ptr to this actor.
 
template<class F >
void attach_functor (F f)
 Convenience function that attaches the functor f to this actor.
 
actor_addr address () const noexcept
 Returns the logical actor address.
 
virtual size_t detach (const attachable::token &what)=0
 Detaches the first attached object that matches what.
 
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.
 
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
virtual bool enqueue (strong_actor_ptr sender, message_id mid, message content, execution_unit *host=nullptr)=0
 Enqueues a new message without forwarding stack to the channel.
 
bool is_abstract_actor () const
 
bool is_abstract_group () const
 
bool is_actor_decorator () const
 

Protected Member Functions

 abstract_actor (actor_config &cfg)
 
- Protected Member Functions inherited from caf::abstract_channel
int flags () const
 
void flags (int new_value)
 

Protected Attributes

std::mutex mtx_
 

Related Functions

(Note that these are not member functions.)

using actor_id = uint64_t
 A unique actor ID.
 

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
 
static constexpr int is_hidden_flag = 0x10000000
 

Detailed Description

Base class for all actor implementations.

Member Function Documentation

◆ attach()

virtual void caf::abstract_actor::attach ( attachable_ptr  ptr)
pure virtual

Attaches ptr to this actor.

The actor will call ptr->detach(...) on exit, or immediately if it already finished execution.

Implemented in caf::monitorable_actor.

◆ attach_functor()

template<class F >
void caf::abstract_actor::attach_functor ( f)

Convenience function that attaches the functor f to this actor.

The actor executes f() on exit or immediately if it is not running.

◆ detach()

virtual size_t caf::abstract_actor::detach ( const attachable::token what)
pure virtual

Detaches the first attached object that matches what.

Implemented in caf::monitorable_actor.

◆ enqueue() [1/2]

virtual bool caf::abstract_actor::enqueue ( mailbox_element_ptr  what,
execution_unit host 
)
pure virtual

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

This enqueue variant allows to define forwarding chains.

Returns
true if the message has added to the mailbox, false otherwise. In the latter case, the actor terminated and the message has been dropped. Once this function returns false, it returns false for all future invocations.
Note
The returned value is purely informational and may be used to discard actor handles early. Messages may still get dropped later even if this function returns true. In particular when dealing with remote actors.

Implemented in caf::actor_companion, caf::decorator::sequencer, caf::decorator::splitter, caf::forwarding_actor_proxy, caf::actor_pool, and caf::blocking_actor.

◆ enqueue() [2/2]

bool caf::abstract_actor::enqueue ( strong_actor_ptr  sender,
message_id  mid,
message  content,
execution_unit host 
)
overridevirtual

Enqueues a new message without forwarding stack to the channel.

Returns
true if the message has been dispatches successful, false otherwise. In the latter case, the channel has been closed and the message has been dropped. Once this function returns false, it returns false for all future invocations.

Implements caf::abstract_channel.

Reimplemented in caf::actor_companion.

◆ message_types()

virtual std::set< std::string > caf::abstract_actor::message_types ( ) const
virtual

Returns the set of accepted messages types as strings or an empty set if this actor is untyped.

Reimplemented in caf::decorator::sequencer, caf::decorator::splitter, and caf::typed_event_based_actor< Sigs >.

◆ on_destroy()

virtual void caf::abstract_actor::on_destroy ( )
virtual

Cleans up any remaining state before the destructor is called.

This function makes sure it is safe to call virtual functions in sub classes before destroying the object, because calling virtual function in the destructor itself is not safe. Any override implementation is required to call super::destroy() at the end.

Reimplemented in caf::actor_pool, and caf::local_actor.


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