Logo AND Algorithmique Numérique Distribuée

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