11 typedef StorageModel *StorageModelPtr;
14 typedef Storage *StoragePtr;
17 typedef StorageLmm *StorageLmmPtr;
20 typedef StorageAction *StorageActionPtr;
22 class StorageActionLmm;
23 typedef StorageActionLmm *StorageActionLmmPtr;
29 class StorageModel : Model {
33 StoragePtr createResource(const char* id, const char* model, const char* type_id, const char* content_name);
34 double shareResources(double now);
35 void updateActionsState(double now, double delta);
37 xbt_dict_t parseContent(char *filename, size_t *used_size);
44 class Storage : virtual public Resource {
46 Storage(StorageModelPtr model, const char* name, xbt_dict_t properties);
49 void updateState(tmgr_trace_event_t event_type, double value, double date);
51 xbt_dict_t p_content; /* char * -> s_surf_file_t */
53 virtual StorageActionPtr open(const char* mount, const char* path)=0;
54 virtual StorageActionPtr close(surf_file_t fd)=0;
55 //virtual StorageActionPtr unlink(surf_file_t fd)=0;
56 virtual StorageActionPtr ls(const char *path)=0;
57 //virtual size_t getSize(surf_file_t fd);
58 virtual StorageActionPtr read(void* ptr, size_t size, surf_file_t fd)=0;//FIXME:why we have a useless param ptr ??
59 virtual StorageActionPtr write(const void* ptr, size_t size, surf_file_t fd)=0;//FIXME:why we have a useless param ptr ??
63 xbt_dynar_t p_writeActions;
66 class StorageLmm : public ResourceLmm, public Storage {
68 StorageLmm(StorageModelPtr model, const char* name, xbt_dict_t properties,
69 lmm_system_t maxminSystem, double bread, double bwrite, double bconnection,
70 xbt_dict_t content, size_t size);
72 StorageActionPtr open(const char* mount, const char* path);
73 StorageActionPtr close(surf_file_t fd);
74 //StorageActionPtr unlink(surf_file_t fd);
75 StorageActionPtr ls(const char *path);
76 //size_t getSize(surf_file_t fd);
77 StorageActionPtr read(void* ptr, size_t size, surf_file_t fd);//FIXME:why we have a useless param ptr ??
78 StorageActionPtr write(const void* ptr, size_t size, surf_file_t fd);//FIXME:why we have a useless param ptr ??
80 lmm_constraint_t p_constraintWrite; /* Constraint for maximum write bandwidth*/
81 lmm_constraint_t p_constraintRead; /* Constraint for maximum write bandwidth*/
89 READ=0, WRITE, STAT, OPEN, CLOSE, LS
90 } e_surf_action_storage_type_t;
93 class StorageAction : virtual public Action {
96 StorageAction(ModelPtr model, double cost, bool failed, StoragePtr storage, e_surf_action_storage_type_t type){};
100 e_surf_action_storage_type_t m_type;
101 StoragePtr p_storage;
106 class StorageActionLmm : public ActionLmm, public StorageAction {
108 StorageActionLmm(){};
109 StorageActionLmm(ModelPtr model, double cost, bool failed, StorageLmmPtr storage, e_surf_action_storage_type_t type);
113 //FIXME:??void recycle();
116 void setMaxDuration(double duration);
117 void setPriority(double priority);
122 typedef struct s_storage_type {
126 xbt_dict_t properties;
128 } s_storage_type_t, *storage_type_t;
130 typedef struct s_mount {
133 } s_mount_t, *mount_t;
135 typedef struct surf_file {
142 #endif /* STORAGE_HPP_ */