************/
LinkImpl::LinkImpl(simgrid::surf::NetworkModel* model, const char* name, lmm_constraint_t constraint)
- : Resource(model, name, constraint), piface_(Link(this))
+ : Resource(model, name, constraint), piface_(this)
{
if (strcmp(name,"__loopback__"))
* Action *
**********/
- void NetworkAction::setState(Action::State state){
+ void NetworkAction::setState(Action::State state)
+ {
Action::setState(state);
s4u::Link::onCommunicationStateChange(this);
}
+ /** @brief returns a list of all Links that this action is using */
+ std::list<LinkImpl*> NetworkAction::links()
+ {
+ std::list<LinkImpl*> retlist;
+ lmm_system_t sys = getModel()->getMaxminSystem();
+ int llen = lmm_get_number_of_cnst_from_var(sys, getVariable());
+
+ for (int i = 0; i < llen; i++) {
+ /* Beware of composite actions: ptasks put links and cpus together */
+ // extra pb: we cannot dynamic_cast from void*...
+ Resource* resource = static_cast<Resource*>(lmm_constraint_id(lmm_get_cnst_from_var(sys, getVariable(), i)));
+ LinkImpl* link = dynamic_cast<LinkImpl*>(resource);
+ if (link != nullptr)
+ retlist.push_back(link);
+ }
+
+ return retlist;
+ }
}
}