Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add Floyd routing
[simgrid.git] / src / surf / network_smpi.hpp
1 #include "network.hpp"
2
3 /***********
4  * Classes *
5  ***********/
6
7 class NetworkSmpiModel;
8 typedef NetworkSmpiModel *NetworkSmpiModelPtr;
9
10 class NetworkSmpiLink;
11 typedef NetworkSmpiLink *NetworkSmpiLinkPtr;
12
13 class NetworkSmpiLinkLmm;
14 typedef NetworkSmpiLinkLmm *NetworkSmpiLinkLmmPtr;
15
16 class NetworkSmpiAction;
17 typedef NetworkSmpiAction *NetworkSmpiActionPtr;
18
19 class NetworkSmpiActionLmm;
20 typedef NetworkSmpiActionLmm *NetworkSmpiActionLmmPtr;
21
22 /*********
23  * Tools *
24  *********/
25
26 /*********
27  * Model *
28  *********/
29
30 class NetworkSmpiModel : public NetworkCm02Model {
31 public:
32   NetworkSmpiModel(){};
33   void gapAppend(double size, const NetworkCm02LinkLmmPtr link, NetworkCm02ActionLmmPtr action);
34   void gapRemove(ActionLmmPtr action);
35   double latencyFactor(double size);
36   double bandwidthFactor(double size);
37   double bandwidthConstraint(double rate, double bound, double size);
38   void communicateCallBack() {};
39 };
40
41
42 /************
43  * Resource *
44  ************/
45
46 class NetworkSmpiLinkLmm : public NetworkCm02LinkLmm {
47 public:
48   NetworkSmpiLinkLmm(NetworkSmpiModelPtr model, const char *name, xbt_dict_t props,
49                                    lmm_system_t system,
50                                    double constraint_value,
51                                    tmgr_history_t history,
52                                    e_surf_resource_state_t state_init,
53                                    tmgr_trace_t state_trace,
54                                    double metric_peak,
55                                    tmgr_trace_t metric_trace,
56                                    double lat_initial,
57                                    tmgr_trace_t lat_trace,
58                                e_surf_link_sharing_policy_t policy);
59 };
60
61
62 /**********
63  * Action *
64  **********/
65
66 class NetworkSmpiActionLmm : public NetworkCm02ActionLmm {
67 public:
68   NetworkSmpiActionLmm(ModelPtr model, double cost, bool failed);
69 };
70
71