Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' into mc
[simgrid.git] / src / surf / workstation_clm03.hpp
1 /* Copyright (c) 2013-2014. The SimGrid Team.
2  * All rights reserved.                                                     */
3
4 /* This program is free software; you can redistribute it and/or modify it
5  * under the terms of the license (GNU LGPL) which comes with this package. */
6
7 #include "workstation_interface.hpp"
8 #include "storage_interface.hpp"
9 #include "cpu_interface.hpp"
10 #include "network_interface.hpp"
11
12 #ifndef SURF_WORKSTATION_CLM03_HPP_
13 #define SURF_WORKSTATION_CLM03_HPP_
14
15 /***********
16  * Classes *
17  ***********/
18
19 class WorkstationCLM03Model;
20 typedef WorkstationCLM03Model *WorkstationCLM03ModelPtr;
21
22 class WorkstationCLM03;
23 typedef WorkstationCLM03 *WorkstationCLM03Ptr;
24
25 class WorkstationCLM03Action;
26 typedef WorkstationCLM03Action *WorkstationCLM03ActionPtr;
27
28 /*********
29  * Model *
30  *********/
31
32 class WorkstationCLM03Model : public WorkstationModel {
33 public:
34   WorkstationCLM03Model();
35   ~WorkstationCLM03Model();
36   WorkstationPtr createWorkstation(const char *name);
37   double shareResources(double now);
38
39   void updateActionsState(double now, double delta);
40
41   ActionPtr executeParallelTask(int workstation_nb,
42                                         void **workstation_list,
43                                         double *computation_amount,
44                                         double *communication_amount,
45                                         double rate);
46  ActionPtr communicate(WorkstationPtr src, WorkstationPtr dst, double size, double rate);
47 };
48
49 /************
50  * Resource *
51  ************/
52
53 class WorkstationCLM03 : public Workstation {
54 public:
55   WorkstationCLM03(WorkstationModelPtr model, const char* name, xbt_dict_t properties, xbt_dynar_t storage, RoutingEdgePtr netElm, CpuPtr cpu);
56
57   void updateState(tmgr_trace_event_t event_type, double value, double date);
58
59   virtual ActionPtr execute(double size);
60   virtual ActionPtr sleep(double duration);
61   e_surf_resource_state_t getState();
62
63   bool isUsed();
64
65   xbt_dynar_t getVms();
66
67   /* common with vm */
68   void getParams(ws_params_t params);
69   void setParams(ws_params_t params);
70 };
71
72
73 /**********
74  * Action *
75  **********/
76
77
78
79 #endif /* SURF_WORKSTATION_CLM03_HPP_ */