}
void sg_my_network_plugin_init() {
- surf_callback_connect(networkLinkCreatedCallbacks,
- MyNetworkLinkCreatedCallback);
- surf_callback_connect(networkLinkDestructedCallbacks,
- MyNetworkLinkDestructedCallback);
- surf_callback_connect(networkCommunicationCallbacks,
- MyNetworkCommunicationCallback);
+ networkLinkCreatedCallbacks.connect(MyNetworkLinkCreatedCallback);
+ networkLinkDestructedCallbacks.connect(MyNetworkLinkDestructedCallback);
+ networkCommunicationCallbacks.connect(MyNetworkCommunicationCallback);
}
~~~~
"Cpu" to assess energy consumption).
The plugin connects to the code by registering callbacks using
-``surf_callback_register`` (see file ``src/surf/plugins/energy.cpp`` for details).
+``signal.connect(callback)`` (see file ``src/surf/plugins/energy.cpp`` for
+details).
\verbatim
--cfg=plugin:Energy
void Plugin::activateCpuCreatedCallback()
{
- surf_callback_connect(simgrid::surf::cpuCreatedCallbacks,
+ simgrid::surf::cpuCreatedCallbacks.connect(
std::bind(&Plugin::cpuCreatedCallback, this, _1));
}
void Plugin::activateCpuDestructedCallback()
{
- surf_callback_connect(simgrid::surf::cpuDestructedCallbacks,
+ simgrid::surf::cpuDestructedCallbacks.connect(
std::bind(&Plugin::cpuDestructedCallback, this, _1));
}
void Plugin::activateCpuStateChangedCallback()
{
- surf_callback_connect(simgrid::surf::cpuStateChangedCallbacks,
+ simgrid::surf::cpuStateChangedCallbacks.connect(
std::bind(&Plugin::cpuStateChangedCallback, this, _1, _2, _3));
}
void Plugin::activateCpuActionStateChangedCallback()
{
- surf_callback_connect(simgrid::surf::cpuActionStateChangedCallbacks,
+ simgrid::surf::cpuActionStateChangedCallbacks.connect(
std::bind(&Plugin::cpuActionStateChangedCallback, this, _1, _2, _3));
}
void Plugin::activateLinkCreatedCallback()
{
- surf_callback_connect(simgrid::surf::networkLinkCreatedCallbacks,
+ simgrid::surf::networkLinkCreatedCallbacks.connect(
std::bind(&Plugin::networkLinkCreatedCallback, this, _1));
}
void Plugin::activateLinkDestructedCallback()
{
- surf_callback_connect(simgrid::surf::networkLinkDestructedCallbacks,
+ simgrid::surf::networkLinkDestructedCallbacks.connect(
std::bind(&Plugin::networkLinkDestructedCallback, this, _1));
}
void Plugin::activateLinkStateChangedCallback()
{
- surf_callback_connect(simgrid::surf::networkLinkStateChangedCallbacks,
+ simgrid::surf::networkLinkStateChangedCallbacks.connect(
std::bind(&Plugin::networkLinkStateChangedCallback, this, _1, _2, _3));
}
void Plugin::activateNetworkActionStateChangedCallback()
{
- surf_callback_connect(simgrid::surf::networkActionStateChangedCallbacks,
+ simgrid::surf::networkActionStateChangedCallbacks.connect(
std::bind(&Plugin::networkActionStateChangedCallback, this, _1, _2, _3));
}
void Plugin::activateNetworkCommunicateCallback()
{
- surf_callback_connect(simgrid::surf::networkCommunicateCallbacks,
+ simgrid::surf::networkCommunicateCallbacks.connect(
std::bind(&Plugin::networkCommunicateCallback, this, _1, _2, _3, _4, _5));
}
action->getVariable(), 0)));
}
-surf_callback(void, Cpu*) cpuCreatedCallbacks;
-surf_callback(void, Cpu*) cpuDestructedCallbacks;
-surf_callback(void, Cpu*, e_surf_resource_state_t, e_surf_resource_state_t) cpuStateChangedCallbacks;
-surf_callback(void, CpuAction*, e_surf_action_state_t, e_surf_action_state_t) cpuActionStateChangedCallbacks;
+simgrid::surf::signal<void(Cpu*)> cpuCreatedCallbacks;
+simgrid::surf::signal<void(Cpu*)> cpuDestructedCallbacks;
+simgrid::surf::signal<void(Cpu*, e_surf_resource_state_t, e_surf_resource_state_t)> cpuStateChangedCallbacks;
+simgrid::surf::signal<void(CpuAction*, e_surf_action_state_t, e_surf_action_state_t)> cpuActionStateChangedCallbacks;
void cpu_add_traces(){
surf_cpu_model_pm->addTraces();
}
void Cpu::onDie()
{
- surf_callback_emit(cpuDestructedCallbacks, this);
+ cpuDestructedCallbacks(this);
Resource::onDie();
}
{
e_surf_resource_state_t old = Resource::getState();
Resource::setState(state);
- surf_callback_emit(cpuStateChangedCallbacks, this, old, state);
+ cpuStateChangedCallbacks(this, old, state);
}
void Cpu::plug(simgrid::Host* host)
void CpuAction::setState(e_surf_action_state_t state){
e_surf_action_state_t old = getState();
Action::setState(state);
- surf_callback_emit(cpuActionStateChangedCallbacks, this, old, state);
+ cpuActionStateChangedCallbacks(this, old, state);
}
}
* @brief Callbacks handler which emit the callbacks after Cpu creation *
* @details Callback functions have the following signature: `void(CpuPtr)`
*/
-XBT_PUBLIC_DATA( surf_callback(void, Cpu*)) cpuCreatedCallbacks;
+XBT_PUBLIC_DATA(simgrid::surf::signal<void(Cpu*)>) cpuCreatedCallbacks;
/** @ingroup SURF_callbacks
* @brief Callbacks handler which emit the callbacks after Cpu destruction *
* @details Callback functions have the following signature: `void(CpuPtr)`
*/
-XBT_PUBLIC_DATA( surf_callback(void, Cpu*)) cpuDestructedCallbacks;
+XBT_PUBLIC_DATA(simgrid::surf::signal<void(Cpu*)>) cpuDestructedCallbacks;
/** @ingroup SURF_callbacks
* @brief Callbacks handler which emit the callbacks after Cpu State changed *
* @details Callback functions have the following signature: `void(CpuAction *action, e_surf_resource_state_t old, e_surf_resource_state_t current)`
*/
-XBT_PUBLIC_DATA( surf_callback(void, Cpu*, e_surf_resource_state_t, e_surf_resource_state_t)) cpuStateChangedCallbacks;
+XBT_PUBLIC_DATA(simgrid::surf::signal<void(Cpu*, e_surf_resource_state_t, e_surf_resource_state_t)>) cpuStateChangedCallbacks;
/** @ingroup SURF_callbacks
* @brief Callbacks handler which emit the callbacks after CpuAction State changed *
* @details Callback functions have the following signature: `void(CpuAction *action, e_surf_action_state_t old, e_surf_action_state_t current)`
*/
-XBT_PUBLIC_DATA( surf_callback(void, CpuAction*, e_surf_action_state_t, e_surf_action_state_t)) cpuActionStateChangedCallbacks;
+XBT_PUBLIC_DATA(simgrid::surf::signal<void(CpuAction*, e_surf_action_state_t, e_surf_action_state_t)>) cpuActionStateChangedCallbacks;
XBT_PUBLIC(void) cpu_add_traces();
simgrid::xbt::FacetLevel<simgrid::Host, Host> Host::LEVEL;
-surf_callback(void, simgrid::surf::Host*) hostCreatedCallbacks;
-surf_callback(void, simgrid::surf::Host*) hostDestructedCallbacks;
-surf_callback(void, simgrid::surf::Host*, e_surf_resource_state_t, e_surf_resource_state_t) hostStateChangedCallbacks;
-surf_callback(void, simgrid::surf::HostAction*, e_surf_action_state_t, e_surf_action_state_t) hostActionStateChangedCallbacks;
+simgrid::surf::signal<void(simgrid::surf::Host*)> hostCreatedCallbacks;
+simgrid::surf::signal<void(simgrid::surf::Host*)> hostDestructedCallbacks;
+simgrid::surf::signal<void(simgrid::surf::Host*, e_surf_resource_state_t, e_surf_resource_state_t)> hostStateChangedCallbacks;
+simgrid::surf::signal<void(simgrid::surf::HostAction*, e_surf_action_state_t, e_surf_action_state_t)> hostActionStateChangedCallbacks;
/*********
* Model *
void Host::onDie()
{
- surf_callback_emit(hostDestructedCallbacks, this);
+ hostDestructedCallbacks(this);
Resource::onDie();
}
xbt_die("Already attached to host %s", host->id().c_str());
host->set_facet(this);
p_host = host;
- surf_callback_emit(hostCreatedCallbacks, this);
+ hostCreatedCallbacks(this);
}
void Host::setState(e_surf_resource_state_t state){
e_surf_resource_state_t old = Resource::getState();
Resource::setState(state);
- surf_callback_emit(hostStateChangedCallbacks, this, old, state);
+ hostStateChangedCallbacks(this, old, state);
p_cpu->setState(state);
}
void HostAction::setState(e_surf_action_state_t state){
e_surf_action_state_t old = getState();
Action::setState(state);
- surf_callback_emit(hostActionStateChangedCallbacks, this, old, state);
+ hostActionStateChangedCallbacks(this, old, state);
}
}
/** @ingroup SURF_callbacks
* @brief Callbacks fired after Host creation. Signature: `void(Host*)`
*/
-XBT_PUBLIC_DATA(surf_callback(void, Host*)) hostCreatedCallbacks;
+XBT_PUBLIC_DATA(simgrid::surf::signal<void(Host*)>) hostCreatedCallbacks;
/** @ingroup SURF_callbacks
* @brief Callbacks fired Host destruction. Signature: `void(Host*)`
*/
-XBT_PUBLIC_DATA(surf_callback(void, Host*)) hostDestructedCallbacks;
+XBT_PUBLIC_DATA(simgrid::surf::signal<void(Host*)>) hostDestructedCallbacks;
/** @ingroup SURF_callbacks
* @brief Callbacks fired after Host State changed. Signature: `void(Host *, e_surf_resource_state_t old, e_surf_resource_state_t current)`
*/
-XBT_PUBLIC_DATA(surf_callback(void, Host*, e_surf_resource_state_t, e_surf_resource_state_t)) hostStateChangedCallbacks;
+XBT_PUBLIC_DATA(simgrid::surf::signal<void(Host*, e_surf_resource_state_t, e_surf_resource_state_t)>) hostStateChangedCallbacks;
/** @ingroup SURF_callbacks
* @brief Callbacks fired HostAction State changed. Signature: `void(HostAction *, e_surf_action_state_t old, e_surf_action_state_t current)`
*/
-XBT_PUBLIC_DATA(surf_callback(void, HostAction*, e_surf_action_state_t, e_surf_action_state_t)) hostActionStateChangedCallbacks;
+XBT_PUBLIC_DATA(simgrid::surf::signal<void(HostAction*, e_surf_action_state_t, e_surf_action_state_t)>) hostActionStateChangedCallbacks;
}
}
lat_initial, lat_trace,
state_initial, state_trace,
policy);
- surf_callback_emit(networkLinkCreatedCallbacks, link);
+ networkLinkCreatedCallbacks(link);
return link;
}
Link* link = new NetworkCm02Link(this, name, properties, p_maxminSystem, sg_bandwidth_factor * bw_initial, history,
state_initial, state_trace, bw_initial, bw_trace, lat_initial, lat_trace, policy);
- surf_callback_emit(networkLinkCreatedCallbacks, link);
+ networkLinkCreatedCallbacks(link);
return link;
}
xbt_dynar_free(&route);
XBT_OUT();
- surf_callback_emit(networkCommunicateCallbacks, action, src, dst, size, rate);
+ networkCommunicateCallbacks(action, src, dst, size, rate);
return action;
}
NetworkConstantAction *action = new NetworkConstantAction(this, size, sg_latency_factor);
XBT_OUT();
- surf_callback_emit(networkCommunicateCallbacks, action, src, dst, size, rate);
+ networkCommunicateCallbacks(action, src, dst, size, rate);
return action;
}
surf_network_model = new simgrid::surf::NetworkIBModel();
net_define_callbacks();
xbt_dynar_push(all_existing_models, &surf_network_model);
- surf_callback_connect(networkActionStateChangedCallbacks,
- IB_action_state_changed_callback);
- surf_callback_connect(networkCommunicateCallbacks,
- IB_action_init_callback);
-
+ networkActionStateChangedCallbacks.connect(IB_action_state_changed_callback);
+ networkCommunicateCallbacks.connect(IB_action_init_callback);
hostCreatedCallbacks.connect(IB_create_host_callback);
xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", 8775);
* Callbacks *
*************/
-surf_callback(void, simgrid::surf::Link*) networkLinkCreatedCallbacks;
-surf_callback(void, simgrid::surf::Link*) networkLinkDestructedCallbacks;
-surf_callback(void, simgrid::surf::Link*, e_surf_resource_state_t, e_surf_resource_state_t) networkLinkStateChangedCallbacks;
-surf_callback(void, simgrid::surf::NetworkAction*, e_surf_action_state_t, e_surf_action_state_t) networkActionStateChangedCallbacks;
-surf_callback(void, simgrid::surf::NetworkAction*, simgrid::surf::RoutingEdge *src, simgrid::surf::RoutingEdge *dst, double size, double rate) networkCommunicateCallbacks;
+simgrid::surf::signal<void(simgrid::surf::Link*)> networkLinkCreatedCallbacks;
+simgrid::surf::signal<void(simgrid::surf::Link*)> networkLinkDestructedCallbacks;
+simgrid::surf::signal<void(simgrid::surf::Link*, e_surf_resource_state_t, e_surf_resource_state_t)> networkLinkStateChangedCallbacks;
+simgrid::surf::signal<void(simgrid::surf::NetworkAction*, e_surf_action_state_t, e_surf_action_state_t)> networkActionStateChangedCallbacks;
+simgrid::surf::signal<void(simgrid::surf::NetworkAction*, simgrid::surf::RoutingEdge *src, simgrid::surf::RoutingEdge *dst, double size, double rate)> networkCommunicateCallbacks;
}
}
Link::~Link()
{
- surf_callback_emit(networkLinkDestructedCallbacks, this);
+ networkLinkDestructedCallbacks(this);
}
bool Link::isUsed()
void Link::setState(e_surf_resource_state_t state){
e_surf_resource_state_t old = Resource::getState();
Resource::setState(state);
- surf_callback_emit(networkLinkStateChangedCallbacks, this, old, state);
+ networkLinkStateChangedCallbacks(this, old, state);
}
/**********
void NetworkAction::setState(e_surf_action_state_t state){
e_surf_action_state_t old = getState();
Action::setState(state);
- surf_callback_emit(networkActionStateChangedCallbacks, this, old, state);
+ networkActionStateChangedCallbacks(this, old, state);
}
}
* @brief Callbacks handler which emits the callbacks after Link creation
* @details Callback functions have the following signature: `void(Link*)`
*/
-XBT_PUBLIC_DATA( surf_callback(void, simgrid::surf::Link*)) networkLinkCreatedCallbacks;
+XBT_PUBLIC_DATA(simgrid::surf::signal<void(simgrid::surf::Link*)>) networkLinkCreatedCallbacks;
/** @ingroup SURF_callbacks
* @brief Callbacks handler which emits the callbacks after Link destruction
* @details Callback functions have the following signature: `void(Link*)`
*/
-XBT_PUBLIC_DATA( surf_callback(void, simgrid::surf::Link*)) networkLinkDestructedCallbacks;
+XBT_PUBLIC_DATA(simgrid::surf::signal<void(simgrid::surf::Link*)>) networkLinkDestructedCallbacks;
/** @ingroup SURF_callbacks
* @brief Callbacks handler which emits the callbacks after Link State changed
* @details Callback functions have the following signature: `void(LinkAction *action, e_surf_resource_state_t old, e_surf_resource_state_t current)`
*/
-XBT_PUBLIC_DATA( surf_callback(void, simgrid::surf::Link*, e_surf_resource_state_t, e_surf_resource_state_t)) networkLinkStateChangedCallbacks;
+XBT_PUBLIC_DATA(simgrid::surf::signal<void(simgrid::surf::Link*, e_surf_resource_state_t, e_surf_resource_state_t)>) networkLinkStateChangedCallbacks;
/** @ingroup SURF_callbacks
* @brief Callbacks handler which emits the callbacks after NetworkAction State changed
* @details Callback functions have the following signature: `void(NetworkAction *action, e_surf_action_state_t old, e_surf_action_state_t current)`
*/
-XBT_PUBLIC_DATA( surf_callback(void, simgrid::surf::NetworkAction*, e_surf_action_state_t, e_surf_action_state_t)) networkActionStateChangedCallbacks;
+XBT_PUBLIC_DATA(simgrid::surf::signal<void(simgrid::surf::NetworkAction*, e_surf_action_state_t, e_surf_action_state_t)>) networkActionStateChangedCallbacks;
/** @ingroup SURF_callbacks
* @brief Callbacks handler which emits the callbacks after communication created
* @details Callback functions have the following signature: `void(NetworkAction *action, RoutingEdge *src, RoutingEdge *dst, double size, double rate)`
*/
-XBT_PUBLIC_DATA( surf_callback(void, simgrid::surf::NetworkAction*, simgrid::surf::RoutingEdge *src, simgrid::surf::RoutingEdge *dst, double size, double rate)) networkCommunicateCallbacks;
+XBT_PUBLIC_DATA(simgrid::surf::signal<void(simgrid::surf::NetworkAction*, simgrid::surf::RoutingEdge *src, simgrid::surf::RoutingEdge *dst, double size, double rate)>) networkCommunicateCallbacks;
}
}
if (state_trace)
XBT_INFO("The NS3 network model doesn't support link state traces");
Link* link = new NetworkNS3Link(this, name, properties, bw_initial, lat_initial);
- surf_callback_emit(networkLinkCreatedCallbacks, link);
+ networkLinkCreatedCallbacks(link);
return link;
}
action->m_lastSent = 0;
action->p_srcElm = src;
action->p_dstElm = dst;
- surf_callback_emit(networkCommunicateCallbacks, action, src, dst, size, rate);
+ networkCommunicateCallbacks(action, src, dst, size, rate);
return (surf_action_t) action;
}
if (simgrid::energy::surf_energy == NULL) {
simgrid::energy::surf_energy =
new std::map<simgrid::surf::Host*, simgrid::energy::HostEnergy*>();
- surf_callback_connect(simgrid::surf::hostCreatedCallbacks, energyHostCreatedCallback);
- surf_callback_connect(simgrid::surf::VMCreatedCallbacks, energyVMCreatedCallback);
- surf_callback_connect(simgrid::surf::hostDestructedCallbacks, energyHostDestructedCallback);
- surf_callback_connect(simgrid::surf::cpuActionStateChangedCallbacks, energyCpuActionStateChangedCallback);
- surf_callback_connect(simgrid::surf::surfExitCallbacks, sg_energy_plugin_exit);
- surf_callback_connect(simgrid::surf::hostStateChangedCallbacks, energyStateChangedCallback);
+ simgrid::surf::hostCreatedCallbacks.connect(energyHostCreatedCallback);
+ simgrid::surf::VMCreatedCallbacks.connect(energyVMCreatedCallback);
+ simgrid::surf::hostDestructedCallbacks.connect(energyHostDestructedCallback);
+ simgrid::surf::cpuActionStateChangedCallbacks.connect(
+ energyCpuActionStateChangedCallback);
+ simgrid::surf::surfExitCallbacks.connect(sg_energy_plugin_exit);
+ simgrid::surf::hostStateChangedCallbacks.connect(
+ energyStateChangedCallback);
}
}
* Callbacks *
*************/
-surf_callback(void, simgrid::surf::Storage*) storageCreatedCallbacks;
-surf_callback(void, simgrid::surf::Storage*) storageDestructedCallbacks;
-surf_callback(void, simgrid::surf::Storage*, e_surf_resource_state_t, e_surf_resource_state_t) storageStateChangedCallbacks;
-surf_callback(void, simgrid::surf::StorageAction*, e_surf_action_state_t, e_surf_action_state_t) storageActionStateChangedCallbacks;
+simgrid::surf::signal<void(simgrid::surf::Storage*)> storageCreatedCallbacks;
+simgrid::surf::signal<void(simgrid::surf::Storage*)> storageDestructedCallbacks;
+simgrid::surf::signal<void(simgrid::surf::Storage*, e_surf_resource_state_t, e_surf_resource_state_t)> storageStateChangedCallbacks;
+simgrid::surf::signal<void(simgrid::surf::StorageAction*, e_surf_action_state_t, e_surf_action_state_t)> storageActionStateChangedCallbacks;
/*********
* Model *
}
Storage::~Storage(){
- surf_callback_emit(storageDestructedCallbacks, this);
+ storageDestructedCallbacks(this);
xbt_dict_free(&p_content);
xbt_dynar_free(&p_writeActions);
free(p_typeId);
{
e_surf_resource_state_t old = Resource::getState();
Resource::setState(state);
- surf_callback_emit(storageStateChangedCallbacks, this, old, state);
+ storageStateChangedCallbacks(this, old, state);
}
xbt_dict_t Storage::getContent()
void StorageAction::setState(e_surf_action_state_t state){
e_surf_action_state_t old = getState();
Action::setState(state);
- surf_callback_emit(storageActionStateChangedCallbacks, this, old, state);
+ storageActionStateChangedCallbacks(this, old, state);
}
}
* @brief Callbacks handler which emit the callbacks after Storage creation *
* @details Callback functions have the following signature: `void(Storage*)`
*/
-XBT_PUBLIC_DATA(surf_callback(void, simgrid::surf::Storage*)) storageCreatedCallbacks;
+XBT_PUBLIC_DATA(simgrid::surf::signal<void(simgrid::surf::Storage*)>) storageCreatedCallbacks;
/** @ingroup SURF_callbacks
* @brief Callbacks handler which emit the callbacks after Storage destruction *
* @details Callback functions have the following signature: `void(StoragePtr)`
*/
-XBT_PUBLIC_DATA(surf_callback(void, simgrid::surf::Storage*)) storageDestructedCallbacks;
+XBT_PUBLIC_DATA(simgrid::surf::signal<void(simgrid::surf::Storage*)>) storageDestructedCallbacks;
/** @ingroup SURF_callbacks
* @brief Callbacks handler which emit the callbacks after Storage State changed *
* @details Callback functions have the following signature: `void(StorageAction *action, e_surf_resource_state_t old, e_surf_resource_state_t current)`
*/
-XBT_PUBLIC_DATA(surf_callback(void, simgrid::surf::Storage*, e_surf_resource_state_t, e_surf_resource_state_t)) storageStateChangedCallbacks;
+XBT_PUBLIC_DATA(simgrid::surf::signal<void(simgrid::surf::Storage*, e_surf_resource_state_t, e_surf_resource_state_t)>) storageStateChangedCallbacks;
/** @ingroup SURF_callbacks
* @brief Callbacks handler which emit the callbacks after StorageAction State changed *
* @details Callback functions have the following signature: `void(StorageAction *action, e_surf_action_state_t old, e_surf_action_state_t current)`
*/
-XBT_PUBLIC_DATA(surf_callback(void, simgrid::surf::StorageAction*, e_surf_action_state_t, e_surf_action_state_t)) storageActionStateChangedCallbacks;
+XBT_PUBLIC_DATA(simgrid::surf::signal<void(simgrid::surf::StorageAction*, e_surf_action_state_t, e_surf_action_state_t)>) storageActionStateChangedCallbacks;
/*********
* Model *
Storage *storage = new StorageN11(this, id, properties, p_maxminSystem,
Bread, Bwrite, Bconnection, type_id, (char *)content_name,
xbt_strdup(content_type), storage_type->size, (char *) attach);
- surf_callback_emit(storageCreatedCallbacks, storage);
+ storageCreatedCallbacks(storage);
xbt_lib_set(storage_lib, id, SURF_STORAGE_LEVEL, storage);
XBT_DEBUG("SURF storage create resource\n\t\tid '%s'\n\t\ttype '%s'\n\t\tproperties '%p'\n\t\tBread '%f'\n",
namespace simgrid {
namespace surf {
-surf_callback(void, void) surfExitCallbacks;
+simgrid::surf::signal<void(void)> surfExitCallbacks;
}
}
xbt_dynar_free(&model_list_invoke);
routing_exit();
- surf_callback_emit(simgrid::surf::surfExitCallbacks);
+ simgrid::surf::surfExitCallbacks();
if (maxmin_system) {
lmm_system_free(maxmin_system);
}
#endif
-// Deprecated:
-#define surf_callback(arg1, ...) ::simgrid::surf::signal<arg1(__VA_ARGS__)>
-#define surf_callback_connect(callback, fun_ptr) callback.connect(fun_ptr)
-#define surf_callback_emit(callback, ...) callback(__VA_ARGS__)
-
#ifdef _MSC_VER
#pragma warning( disable : 4251)
// 4251: needs to have dll-interface to be used by clients of class
namespace simgrid {
namespace surf {
-extern XBT_PRIVATE surf_callback(void, void) surfExitCallbacks;
+extern XBT_PRIVATE simgrid::surf::signal<void(void)> surfExitCallbacks;
}
}
namespace simgrid {
namespace surf {
-surf_callback(void, simgrid::surf::RoutingEdge*) routingEdgeCreatedCallbacks;
-surf_callback(void, simgrid::surf::As*) asCreatedCallbacks;
+simgrid::surf::signal<void(simgrid::surf::RoutingEdge*)> routingEdgeCreatedCallbacks;
+simgrid::surf::signal<void(simgrid::surf::As*)> asCreatedCallbacks;
}
}
* Callbacks *
*************/
-XBT_PUBLIC_DATA(surf_callback(void, RoutingEdge*)) routingEdgeCreatedCallbacks;
-XBT_PUBLIC_DATA(surf_callback(void, As*)) asCreatedCallbacks;
+XBT_PUBLIC_DATA(simgrid::surf::signal<void(RoutingEdge*)>) routingEdgeCreatedCallbacks;
+XBT_PUBLIC_DATA(simgrid::surf::signal<void(As*)>) asCreatedCallbacks;
}
}
* Callbacks *
*************/
-surf_callback(void, simgrid::surf::VirtualMachine*) VMCreatedCallbacks;
-surf_callback(void, simgrid::surf::VirtualMachine*) VMDestructedCallbacks;
-surf_callback(void, simgrid::surf::VirtualMachine*) VMStateChangedCallbacks;
+simgrid::surf::signal<void(simgrid::surf::VirtualMachine*)> VMCreatedCallbacks;
+simgrid::surf::signal<void(simgrid::surf::VirtualMachine*)> VMDestructedCallbacks;
+simgrid::surf::signal<void(simgrid::surf::VirtualMachine*)> VMStateChangedCallbacks;
/*********
* Model *
*/
VirtualMachine::~VirtualMachine()
{
- surf_callback_emit(VMDestructedCallbacks, this);
+ VMDestructedCallbacks(this);
VMModel::ws_vms.erase(VMModel::vm_list_t::s_iterator_to(*this));
}
void VirtualMachine::setState(e_surf_resource_state_t state){
Resource::setState(state);
- surf_callback_emit(VMStateChangedCallbacks, this);
+ VMStateChangedCallbacks(this);
}
/*
/** @ingroup SURF_callbacks
* @brief Callbacks fired after VM creation. Signature: `void(VirtualMachine*)`
*/
-extern XBT_PRIVATE surf_callback(void, simgrid::surf::VirtualMachine*) VMCreatedCallbacks;
+extern XBT_PRIVATE simgrid::surf::signal<void(simgrid::surf::VirtualMachine*)> VMCreatedCallbacks;
/** @ingroup SURF_callbacks
* @brief Callbacks fired after VM destruction. Signature: `void(VirtualMachine*)`
*/
-extern XBT_PRIVATE surf_callback(void, simgrid::surf::VirtualMachine*) VMDestructedCallbacks;
+extern XBT_PRIVATE simgrid::surf::signal<void(simgrid::surf::VirtualMachine*)> VMDestructedCallbacks;
/** @ingroup SURF_callbacks
* @brief Callbacks after VM State changes. Signature: `void(VirtualMachine*)`
*/
-extern XBT_PRIVATE surf_callback(void, simgrid::surf::VirtualMachine*) VMStateChangedCallbacks;
+extern XBT_PRIVATE simgrid::surf::signal<void(simgrid::surf::VirtualMachine*)> VMStateChangedCallbacks;
/************
* Resource *
VirtualMachine *VMHL13Model::createVM(const char *name, sg_host_t host_PM)
{
VirtualMachine* vm = new VMHL13(this, name, NULL, host_PM);
- surf_callback_emit(VMCreatedCallbacks, vm);
+ VMCreatedCallbacks(vm);
return vm;
}