std::any_of(back_route.begin(), back_route.end(), [](const LinkImpl* link) { return not link->is_on(); });
}
- auto* action = new NetworkCm02Action(this, size, failed);
+ auto* action = new NetworkCm02Action(this, *src, *dst, size, failed);
action->sharing_penalty_ = latency;
action->latency_ = latency;
action->rate_ = rate;
friend Action* NetworkCm02Model::communicate(s4u::Host* src, s4u::Host* dst, double size, double rate);
public:
- NetworkCm02Action(Model* model, double cost, bool failed) : NetworkAction(model, cost, failed){};
+ NetworkCm02Action(Model* model, s4u::Host& src, s4u::Host& dst, double cost, bool failed)
+ : NetworkAction(model, src, dst, cost, failed){};
virtual ~NetworkCm02Action() = default;
void update_remains_lazy(double now) override;
};
Action* NetworkConstantModel::communicate(s4u::Host* src, s4u::Host* dst, double size, double)
{
- auto* action = new NetworkConstantAction(this, size, sg_latency_factor);
+ auto* action = new NetworkConstantAction(this, *src, *dst, size, sg_latency_factor);
s4u::Link::on_communicate(*action, src, dst);
return action;
/**********
* Action *
**********/
-NetworkConstantAction::NetworkConstantAction(NetworkConstantModel* model_, double size, double latency)
- : NetworkAction(model_, size, false), initial_latency_(latency)
+NetworkConstantAction::NetworkConstantAction(NetworkConstantModel* model_, s4u::Host& src, s4u::Host& dst, double size,
+ double latency)
+ : NetworkAction(model_, src, dst, size, false), initial_latency_(latency)
{
latency_ = latency;
if (latency_ <= 0.0)
class NetworkConstantAction : public NetworkAction {
public:
- NetworkConstantAction(NetworkConstantModel* model_, double size, double latency);
+ NetworkConstantAction(NetworkConstantModel* model_, s4u::Host& src, s4u::Host& dst, double size, double latency);
~NetworkConstantAction();
double initial_latency_;
void update_remains_lazy(double now) override;
* @details A NetworkAction represents a communication between two [hosts](@ref simgrid::surf::HostImpl)
*/
class NetworkAction : public Action {
+ s4u::Host& src_;
+ s4u::Host& dst_;
+
public:
/** @brief Constructor
*
* @param cost The cost of this NetworkAction in [TODO]
* @param failed [description]
*/
- NetworkAction(Model* model, double cost, bool failed) : Action(model, cost, failed) {}
+ NetworkAction(Model* model, s4u::Host& src, s4u::Host& dst, double cost, bool failed)
+ : Action(model, cost, failed), src_(src), dst_(dst)
+ {
+ }
/**
* @brief NetworkAction constructor
* @param failed Actions can be created in a failed state
* @param var The lmm variable associated to this Action if it is part of a LMM component
*/
- NetworkAction(Model* model, double cost, bool failed, lmm::Variable* var) : Action(model, cost, failed, var){};
+ NetworkAction(Model* model, s4u::Host& src, s4u::Host& dst, double cost, bool failed, lmm::Variable* var)
+ : Action(model, cost, failed, var), src_(src), dst_(dst){};
void set_state(Action::State state) override;
virtual std::list<LinkImpl*> get_links() const;
double lat_current_ = {};
double sharing_penalty_ = {};
double rate_ = {};
+ s4u::Host& get_src() { return src_; }
+ s4u::Host& get_dst() { return dst_; }
};
} // namespace resource
} // namespace kernel