Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Replace swag by boost::intrusive::list in surf
[simgrid.git] / src / surf / network_constant.hpp
1 #include "network_cm02.hpp"
2
3 #ifndef NETWORK_CONSTANT_HPP_
4 #define NETWORK_CONSTANT_HPP_
5
6 /***********
7  * Classes *
8  ***********/
9 class NetworkConstantModel;
10 typedef NetworkConstantModel *NetworkConstantModelPtr;
11
12 class NetworkConstantLinkLmm;
13 typedef NetworkConstantLinkLmm *NetworkConstantLinkLmmPtr;
14
15 class NetworkConstantActionLmm;
16 typedef NetworkConstantActionLmm *NetworkConstantActionLmmPtr;
17
18 /*********
19  * Model *
20  *********/
21 class NetworkConstantModel : public NetworkCm02Model {
22 public:
23   NetworkConstantModel()
24   : NetworkCm02Model("constant time network")
25   {
26     p_updateMechanism = UM_UNDEFINED;
27   };
28   double shareResources(double now);
29   void updateActionsState(double now, double delta);
30   ActionPtr communicate(RoutingEdgePtr src, RoutingEdgePtr dst,
31                                            double size, double rate);
32   void gapRemove(ActionLmmPtr action);
33   //FIXME:virtual void addTraces() =0;
34 };
35
36 /************
37  * Resource *
38  ************/
39 class NetworkConstantLinkLmm : public NetworkCm02LinkLmm {
40 public:
41   NetworkConstantLinkLmm(NetworkCm02ModelPtr model, const char* name, xbt_dict_t properties);
42   bool isUsed();
43   void updateState(tmgr_trace_event_t event_type, double value, double date);
44   double getBandwidth();
45   double getLatency();
46   bool isShared();
47 };
48
49 /**********
50  * Action *
51  **********/
52 class NetworkConstantActionLmm : public NetworkCm02ActionLmm {
53 public:
54   NetworkConstantActionLmm(NetworkConstantModelPtr model_, double size, double latency):
55           Action(model_, size, false), NetworkCm02ActionLmm(model_, 0, false), m_latInit(latency) {
56         m_latency = latency;
57         if (m_latency <= 0.0) {
58           p_stateSet = getModel()->getDoneActionSet();
59           p_stateSet->push_back(*this);
60         }
61         p_variable = NULL;
62   };
63   int unref();
64   void recycle();
65   void cancel();
66   void setCategory(const char *category);
67   void suspend();
68   void resume();
69   bool isSuspended();
70   double m_latInit;
71   int m_suspended;
72 };
73
74 #endif /* NETWORK_CONSTANT_HPP_ */