Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Make initialization order match declaration order.
[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 NetworkConstantLink;
13 typedef NetworkConstantLink *NetworkConstantLinkPtr;
14
15 class NetworkConstantAction;
16 typedef NetworkConstantAction *NetworkConstantActionPtr;
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(ActionPtr action);
33   //FIXME:virtual void addTraces() =0;
34 };
35
36 /************
37  * Resource *
38  ************/
39 class NetworkConstantLink : public NetworkCm02Link {
40 public:
41   NetworkConstantLink(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 NetworkConstantAction : public NetworkCm02Action {
53 public:
54   NetworkConstantAction(NetworkConstantModelPtr model_, double size, double latency)
55   : NetworkCm02Action(model_, size, false)
56   , m_latInit(latency)
57   {
58         m_latency = latency;
59         if (m_latency <= 0.0) {
60           p_stateSet = getModel()->getDoneActionSet();
61           p_stateSet->push_back(*this);
62         }
63         p_variable = NULL;
64   };
65   int unref();
66   void recycle();
67   void cancel();
68   void setCategory(const char *category);
69   void suspend();
70   void resume();
71   bool isSuspended();
72   double m_latInit;
73   int m_suspended;
74 };
75
76 #endif /* NETWORK_CONSTANT_HPP_ */