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 : public Model {
33 StoragePtr createResource(const char* id, const char* model, const char* type_id,
34 const char* content_name, const char* content_type, xbt_dict_t properties);
35 double shareResources(double now);
36 void updateActionsState(double now, double delta);
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);
57 virtual StorageActionPtr open(const char* mount, const char* path)=0;
58 virtual StorageActionPtr close(surf_file_t fd)=0;
59 //virtual StorageActionPtr unlink(surf_file_t fd)=0;
60 virtual StorageActionPtr ls(const char *path)=0;
61 virtual StorageActionPtr read(surf_file_t fd, sg_size_t size)=0;
62 virtual StorageActionPtr write(surf_file_t fd, sg_size_t size)=0;
63 virtual void rename(const char *src, const char *dest)=0;
65 virtual xbt_dict_t getContent()=0;
66 virtual sg_size_t getSize()=0;
68 xbt_dict_t parseContent(char *filename);
70 xbt_dynar_t p_writeActions;
73 class StorageLmm : public ResourceLmm, public Storage {
75 StorageLmm(StorageModelPtr model, const char* name, xbt_dict_t properties,
76 lmm_system_t maxminSystem, double bread, double bwrite, double bconnection,
77 const char* type_id, char *content_name, char *content_type, size_t size);
79 StorageActionPtr open(const char* mount, const char* path);
80 StorageActionPtr close(surf_file_t fd);
81 //StorageActionPtr unlink(surf_file_t fd);
82 StorageActionPtr ls(const char *path);
83 xbt_dict_t getContent();
85 StorageActionPtr read(surf_file_t fd, sg_size_t size);//FIXME:why we have a useless param ptr ??
86 StorageActionPtr write(surf_file_t fd, sg_size_t size);//FIXME:why we have a useless param ptr ??
87 void rename(const char *src, const char *dest);
89 lmm_constraint_t p_constraintWrite; /* Constraint for maximum write bandwidth*/
90 lmm_constraint_t p_constraintRead; /* Constraint for maximum write bandwidth*/
98 READ=0, WRITE, STAT, OPEN, CLOSE, LS
99 } e_surf_action_storage_type_t;
102 class StorageAction : virtual public Action {
105 StorageAction(ModelPtr model, double cost, bool failed, StoragePtr storage, e_surf_action_storage_type_t type)
106 : p_storage(storage), m_type(type) {};
110 e_surf_action_storage_type_t m_type;
111 StoragePtr p_storage;
116 class StorageActionLmm : public ActionLmm, public StorageAction {
118 StorageActionLmm(){};
119 StorageActionLmm(ModelPtr model, double cost, bool failed, StorageLmmPtr storage, e_surf_action_storage_type_t type);
123 //FIXME:??void recycle();
126 void setMaxDuration(double duration);
127 void setPriority(double priority);
132 typedef struct s_storage_type {
137 xbt_dict_t properties;
139 } s_storage_type_t, *storage_type_t;
141 typedef struct s_mount {
144 } s_mount_t, *mount_t;
146 typedef struct surf_file {
153 #endif /* STORAGE_HPP_ */