-XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(surf_network);
-
-static void IB_create_host_callback(simgrid::s4u::Host& host){
- using simgrid::surf::NetworkIBModel;
- using simgrid::surf::IBNode;
-
- static int id=0;
- // pour t->id -> rajouter une nouvelle struct dans le dict, pour stocker les comms actives
-
- IBNode* act = new IBNode(id);
-
- id++;
- ((NetworkIBModel*)surf_network_model)->active_nodes.insert({host.get_name(), act});
-}
-
-static void IB_action_state_changed_callback(simgrid::surf::NetworkAction* action)
-{
- using simgrid::surf::NetworkIBModel;
- using simgrid::surf::IBNode;
-
- if (action->get_state() != simgrid::kernel::resource::Action::State::done)
- return;
- std::pair<IBNode*,IBNode*> pair = ((NetworkIBModel*)surf_network_model)->active_comms[action];
- XBT_DEBUG("IB callback - action %p finished", action);
-
- ((NetworkIBModel*)surf_network_model)->updateIBfactors(action, pair.first, pair.second, 1);
-
- ((NetworkIBModel*)surf_network_model)->active_comms.erase(action);
-
-}
-
-static void IB_action_init_callback(simgrid::surf::NetworkAction* action, simgrid::s4u::Host* src,
- simgrid::s4u::Host* dst)
-{
- simgrid::surf::NetworkIBModel* ibModel = (simgrid::surf::NetworkIBModel*)surf_network_model;
- simgrid::surf::IBNode* act_src;
- simgrid::surf::IBNode* act_dst;
-
- auto asrc = ibModel->active_nodes.find(src->get_name());
- if (asrc != ibModel->active_nodes.end()) {
- act_src = asrc->second;
- } else {
- throw std::out_of_range(std::string("Could not find '") + src->get_cname() + "' active comms !");
- }
-
- auto adst = ibModel->active_nodes.find(dst->get_name());
- if (adst != ibModel->active_nodes.end()) {
- act_dst = adst->second;
- } else {
- throw std::out_of_range(std::string("Could not find '") + dst->get_cname() + "' active comms !");
- }
-
- ibModel->active_comms[action]=std::make_pair(act_src, act_dst);
-
- ibModel->updateIBfactors(action, act_src, act_dst, 0);
-}