6 #ifndef WORKSTATION_HPP_
7 #define WORKSTATION_HPP_
13 class WorkstationModel;
14 typedef WorkstationModel *WorkstationModelPtr;
16 class WorkstationCLM03;
17 typedef WorkstationCLM03 *WorkstationCLM03Ptr;
19 class WorkstationAction;
20 typedef WorkstationAction *WorkstationActionPtr;
22 /*FIXME:class WorkstationActionLmm;
23 typedef WorkstationActionLmm *WorkstationActionLmmPtr;*/
28 extern WorkstationModelPtr surf_workstation_model;
33 class WorkstationModel : public Model {
35 WorkstationModel(string name): Model(name) {};
37 void parseInit(sg_platf_host_cbarg_t host);
38 WorkstationCLM03Ptr createResource(string name);
39 double shareResources(double now);
40 void updateActionsState(double now, double delta);
42 ActionPtr executeParallelTask(int workstation_nb,
43 void **workstation_list,
44 double *computation_amount,
45 double *communication_amount,
47 xbt_dynar_t getRoute(WorkstationCLM03Ptr src, WorkstationCLM03Ptr dst);
48 ActionPtr communicate(WorkstationCLM03Ptr src, WorkstationCLM03Ptr dst, double size, double rate);
55 class WorkstationCLM03 : virtual public Resource {
57 WorkstationCLM03(WorkstationModelPtr model, const char* name, xbt_dict_t properties, xbt_dynar_t storage, RoutingEdgePtr netElm, CpuPtr cpu);
59 void updateState(tmgr_trace_event_t event_type, double value, double date);
61 ActionPtr execute(double size);
62 ActionPtr sleep(double duration);
63 e_surf_resource_state_t getState();
66 double getSpeed(double load);
67 double getAvailableSpeed();
69 xbt_dict_t getProperties();
71 StoragePtr findStorageOnMountList(const char* storage);
72 ActionPtr open(const char* mount, const char* path);
73 ActionPtr close(surf_file_t fd);
74 int unlink(surf_file_t fd);
75 ActionPtr ls(const char* mount, const char *path);
76 size_t getSize(surf_file_t fd);
77 ActionPtr read(void* ptr, size_t size, surf_file_t fd);
78 ActionPtr write(const void* ptr, size_t size, surf_file_t fd);
81 xbt_dynar_t p_storage;
82 RoutingEdgePtr p_netElm;
84 NetworkCm02LinkPtr p_network;
87 class WorkstationCLM03Lmm : public WorkstationCLM03, public ResourceLmm {
89 WorkstationCLM03Lmm(WorkstationModelPtr model, const char* name, xbt_dict_t props): WorkstationCLM03(model, name, props, NULL, NULL, NULL){};
95 class WorkstationAction : virtual public Action {
97 WorkstationAction(ModelPtr model, double cost, bool failed): Action(model, cost, failed) {};
100 class WorkstationActionLmm : public ActionLmm, public WorkstationAction {
102 WorkstationActionLmm(ModelPtr model, double cost, bool failed): ActionLmm(model, cost, failed), WorkstationAction(model, cost, failed) {};
106 #endif /* WORKSTATION_HPP_ */