4 #ifndef SURF_MODEL_NETWORK_H_
5 #define SURF_MODEL_NETWORK_H_
11 typedef NetworkModel *NetworkModelPtr;
13 class NetworkCm02Link;
14 typedef NetworkCm02Link *NetworkCm02LinkPtr;
16 class NetworkCm02Action;
17 typedef NetworkCm02Action *NetworkCm02ActionPtr;
19 class NetworkCm02ActionLmm;
20 typedef NetworkCm02ActionLmm *NetworkCm02ActionLmmPtr;
25 class NetworkModel : public Model {
27 NetworkModel(string name) : Model(name) {};
28 NetworkCm02LinkPtr createResource(string name);
29 void updateActionsStateLazy(double now, double delta);
30 void updateActionsStateFull(double now, double delta);
31 void gapRemove(ActionLmmPtr action);
33 virtual void addTraces() =0;
39 class NetworkCm02Link : public Resource {
41 NetworkCm02Link(NetworkModelPtr model, const char* name, xbt_dict_t properties) : Resource(model, name, properties) {};
43 /* Using this object with the public part of
44 model does not make sense */
46 tmgr_trace_event_t lat_event;
52 class NetworkCm02Action : virtual public Action {
54 NetworkCm02Action(ModelPtr model, double cost, bool failed): Action(model, cost, failed) {};
59 const char* p_senderLinkName;
62 xbt_fifo_item_t p_senderFifoItem;
63 #ifdef HAVE_LATENCY_BOUND_TRACKING
69 class NetworkCm02ActionLmm : public ActionLmm, public NetworkCm02Action {
71 NetworkCm02ActionLmm(ModelPtr model, double cost, bool failed): ActionLmm(model, cost, failed), NetworkCm02Action(model, cost, failed) {};
72 void updateRemainingLazy(double now);
75 #endif /* SURF_MODEL_NETWORK_H_ */