hpx/async_distributed/base_lco.hpp

See Public API for a list of names and headers that are part of the public HPX API.

template<>
struct get_lva<lcos::base_lco>

Public Static Functions

static constexpr lcos::base_lco *call(naming::address_type lva)
template<>
struct get_lva<lcos::base_lco const>

Public Static Functions

static constexpr lcos::base_lco const *call(naming::address_type lva)
namespace hpx
template<>
struct get_lva<lcos::base_lco>

Public Static Functions

static constexpr lcos::base_lco *call(naming::address_type lva)
template<>
struct get_lva<lcos::base_lco const>

Public Static Functions

static constexpr lcos::base_lco const *call(naming::address_type lva)
namespace lcos
class base_lco
#include <base_lco.hpp>

The base_lco class is the common base class for all LCO’s implementing a simple set_event action

Subclassed by hpx::lcos::base_lco_with_value< Result, RemoteResult, ComponentTag >, hpx::lcos::base_lco_with_value< void, void, ComponentTag >

Public Types

typedef components::managed_component<base_lco> wrapping_type
typedef base_lco base_type_holder

Public Functions

virtual void set_event() = 0
virtual void set_exception(std::exception_ptr const &e)
virtual void connect(hpx::id_type const&)
virtual void disconnect(hpx::id_type const&)
virtual ~base_lco()

Destructor, needs to be virtual to allow for clean destruction of derived objects

virtual void finalize()

finalize() will be called just before the instance gets destructed

void set_event_nonvirt()

The function set_event_nonvirt is called whenever a set_event_action is applied on a instance of a LCO. This function just forwards to the virtual function set_event, which is overloaded by the derived concrete LCO.

void set_exception_nonvirt(std::exception_ptr const &e)

The function set_exception is called whenever a set_exception_action is applied on a instance of a LCO. This function just forwards to the virtual function set_exception, which is overloaded by the derived concrete LCO.

Parameters
  • e: [in] The exception encapsulating the error to report to this LCO instance.

void connect_nonvirt(hpx::id_type const &id)

The function connect_nonvirt is called whenever a connect_action is applied on a instance of a LCO. This function just forwards to the virtual function connect, which is overloaded by the derived concrete LCO.

Parameters
  • id: [in] target id

void disconnect_nonvirt(hpx::id_type const &id)

The function disconnect_nonvirt is called whenever a disconnect_action is applied on a instance of a LCO. This function just forwards to the virtual function disconnect, which is overloaded by the derived concrete LCO.

Parameters
  • id: [in] target id

HPX_DEFINE_COMPONENT_DIRECT_ACTION(base_lco, set_event_nonvirt, set_event_action)

Each of the exposed functions needs to be encapsulated into an action type, allowing to generate all required boilerplate code for threads, serialization, etc.

The set_event_action may be used to unconditionally trigger any LCO instances, it carries no additional parameters. The set_exception_action may be used to transfer arbitrary error information from the remote site to the LCO instance specified as a continuation. This action carries 2 parameters:

Parameters
  • std::exception_ptr: [in] The exception encapsulating the error to report to this LCO instance.

set_exception_action HPX_DEFINE_COMPONENT_DIRECT_ACTION(base_lco, connect_nonvirt, connect_action)

The connect_action may be used to.

The set_exception_action may be used to

Public Members

hpx::lcos::base_lco::set_exception_nonvirt
set_exception_action disconnect_nonvirt

Public Static Functions

static components::component_type get_component_type()
static void set_component_type(components::component_type type)