Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
984779569d36730c8d0cdcfdc80fc1333f4a407a
[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() : NetworkCm02Model("constant time network") {};
24   double shareResources(double now);
25   void updateActionsState(double now, double delta);
26   ActionPtr communicate(RoutingEdgePtr src, RoutingEdgePtr dst,
27                                            double size, double rate);
28   void gapRemove(ActionLmmPtr action);
29   //FIXME:virtual void addTraces() =0;
30 };
31
32 /************
33  * Resource *
34  ************/
35 class NetworkConstantLinkLmm : public NetworkCm02LinkLmm {
36 public:
37   NetworkConstantLinkLmm(NetworkCm02ModelPtr model, const char* name, xbt_dict_t properties);
38   bool isUsed();
39   void updateState(tmgr_trace_event_t event_type, double value, double date);
40   double getBandwidth();
41   double getLatency();
42   bool isShared();
43 };
44
45 /**********
46  * Action *
47  **********/
48 class NetworkConstantActionLmm : public NetworkCm02ActionLmm {
49 public:
50   NetworkConstantActionLmm(NetworkConstantModelPtr model_, double size, double latency):
51           Action(model_, size, false), NetworkCm02ActionLmm(model_, 0, false), m_latInit(latency) {
52         m_latency = latency;
53         if (m_latency <= 0.0) {
54           p_stateSet = getModel()->getDoneActionSet();
55           xbt_swag_insert(static_cast<ActionPtr>(this), p_stateSet);
56         }
57   };
58   int unref();
59   void recycle();
60   void cancel();
61   void setCategory(const char *category);
62   void suspend();
63   void resume();
64   bool isSuspended();
65   double m_latInit;
66   int m_suspended;
67 };
68
69 #endif /* NETWORK_CONSTANT_HPP_ */