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 hpx::get_lva<lcos::base_lco>#

Public Static Functions

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

Public Static Functions

static inline constexpr lcos::base_lco const *call(naming::address_type lva) noexcept#
namespace hpx
template<> base_lco >

Public Static Functions

static inline constexpr lcos::base_lco *call(naming::address_type lva) noexcept#
template<> base_lco const >

Public Static Functions

static inline constexpr lcos::base_lco const *call(naming::address_type lva) noexcept
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) HPX_DEFINE_COMPONENT_DIRECT_ACTION(base_lco

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) HPX_DEFINE_COMPONENT_DIRECT_ACTION(base_lco

The connect_action may be used to.

The set_exception_action may be used to

Public Members

set_exception_nonvirt
set_exception_action disconnect_nonvirt#

Public Static Functions

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