Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add doc to new tool
[simgrid.git] / src / surf / workstation_clm03.hpp
1 #include "workstation_interface.hpp"
2 #include "storage_interface.hpp"
3 #include "cpu_interface.hpp"
4 #include "network_interface.hpp"
5
6 #ifndef SURF_WORKSTATION_CLM03_HPP_
7 #define SURF_WORKSTATION_CLM03_HPP_
8
9 /***********
10  * Classes *
11  ***********/
12
13 class WorkstationCLM03Model;
14 typedef WorkstationCLM03Model *WorkstationCLM03ModelPtr;
15
16 class WorkstationCLM03;
17 typedef WorkstationCLM03 *WorkstationCLM03Ptr;
18
19 class WorkstationCLM03Action;
20 typedef WorkstationCLM03Action *WorkstationCLM03ActionPtr;
21
22 /*********
23  * Model *
24  *********/
25
26 class WorkstationCLM03Model : virtual public WorkstationModel {
27 public:
28   WorkstationCLM03Model(const char *name);
29   WorkstationCLM03Model();
30   ~WorkstationCLM03Model();
31   void parseInit(sg_platf_host_cbarg_t host);
32   WorkstationPtr createResource(const char *name);
33   double shareResources(double now);
34
35   void updateActionsState(double now, double delta);
36
37   ActionPtr executeParallelTask(int workstation_nb,
38                                         void **workstation_list,
39                                         double *computation_amount,
40                                         double *communication_amount,
41                                         double rate);
42  xbt_dynar_t getRoute(WorkstationPtr src, WorkstationPtr dst);
43  ActionPtr communicate(WorkstationPtr src, WorkstationPtr dst, double size, double rate);
44 };
45
46 /************
47  * Resource *
48  ************/
49
50 class WorkstationCLM03 : public Workstation {
51 public:
52   WorkstationCLM03(WorkstationModelPtr model, const char* name, xbt_dict_t properties, xbt_dynar_t storage, RoutingEdgePtr netElm, CpuPtr cpu);
53
54   void updateState(tmgr_trace_event_t event_type, double value, double date);
55
56   virtual ActionPtr execute(double size);
57   virtual ActionPtr sleep(double duration);
58   e_surf_resource_state_t getState();
59
60   bool isUsed();
61
62   xbt_dynar_t getVms();
63
64   /* common with vm */
65   void getParams(ws_params_t params);
66   void setParams(ws_params_t params);
67 };
68
69
70 /**********
71  * Action *
72  **********/
73
74 class WorkstationCLM03Action : public WorkstationAction {
75 public:
76   WorkstationCLM03Action(ModelPtr model, double cost, bool failed)
77   : WorkstationAction(model, cost, failed) {}
78 };
79
80
81 #endif /* SURF_WORKSTATION_CLM03_HPP_ */