X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/5faf49cdf3f8ad8751317b857a6d3134fe07eda3..0c43de62fbe4bfc243d6512296e09207e80bcd54:/src/surf/storage.hpp diff --git a/src/surf/storage.hpp b/src/surf/storage.hpp index 7e929d6e1e..91afd10f22 100644 --- a/src/surf/storage.hpp +++ b/src/surf/storage.hpp @@ -13,49 +13,81 @@ typedef StorageModel *StorageModelPtr; class Storage; typedef Storage *StoragePtr; +class StorageLmm; +typedef StorageLmm *StorageLmmPtr; + +class StorageAction; +typedef StorageAction *StorageActionPtr; + class StorageActionLmm; typedef StorageActionLmm *StorageActionLmmPtr; + /********* * Model * *********/ -class StorageModel : Model { +class StorageModel : public Model { public: StorageModel(); ~StorageModel(); - StoragePtr createResource(const char* id, const char* model, const char* type_id, const char* content_name); + StoragePtr createResource(const char* id, const char* model, const char* type_id, + const char* content_name, const char* content_type, xbt_dict_t properties); double shareResources(double now); void updateActionsState(double now, double delta); - xbt_dict_t parseContent(char *filename, size_t *used_size); }; /************ * Resource * ************/ -class Storage : public ResourceLmm { +class Storage : virtual public Resource { public: Storage(StorageModelPtr model, const char* name, xbt_dict_t properties); bool isUsed(); void updateState(tmgr_trace_event_t event_type, double value, double date); + xbt_dict_t p_content; + char* p_contentType; + sg_size_t m_size; + sg_size_t m_usedSize; + char * p_typeId; + + virtual StorageActionPtr open(const char* mount, const char* path)=0; + virtual StorageActionPtr close(surf_file_t fd)=0; + //virtual StorageActionPtr unlink(surf_file_t fd)=0; + virtual StorageActionPtr ls(const char *path)=0; + virtual StorageActionPtr read(surf_file_t fd, sg_size_t size)=0; + virtual StorageActionPtr write(surf_file_t fd, sg_size_t size)=0; + virtual void rename(const char *src, const char *dest)=0; + + virtual xbt_dict_t getContent()=0; + virtual sg_size_t getSize()=0; + + xbt_dict_t parseContent(char *filename); + + xbt_dynar_t p_writeActions; +}; + +class StorageLmm : public ResourceLmm, public Storage { +public: + StorageLmm(StorageModelPtr model, const char* name, xbt_dict_t properties, + lmm_system_t maxminSystem, double bread, double bwrite, double bconnection, + const char* type_id, char *content_name, char *content_type, size_t size); + + StorageActionPtr open(const char* mount, const char* path); + StorageActionPtr close(surf_file_t fd); + //StorageActionPtr unlink(surf_file_t fd); + StorageActionPtr ls(const char *path); + xbt_dict_t getContent(); + sg_size_t getSize(); + StorageActionPtr read(surf_file_t fd, sg_size_t size);//FIXME:why we have a useless param ptr ?? + StorageActionPtr write(surf_file_t fd, sg_size_t size);//FIXME:why we have a useless param ptr ?? + void rename(const char *src, const char *dest); + lmm_constraint_t p_constraintWrite; /* Constraint for maximum write bandwidth*/ lmm_constraint_t p_constraintRead; /* Constraint for maximum write bandwidth*/ - xbt_dict_t p_content; /* char * -> s_surf_file_t */ - - StorageActionLmmPtr open(const char* mount, const char* path); - StorageActionLmmPtr close(surf_file_t fd); - StorageActionLmmPtr unlink(surf_file_t fd); - StorageActionLmmPtr ls(const char *path); - size_t getSize(surf_file_t fd); - StorageActionLmmPtr read(void* ptr, size_t size, surf_file_t fd);//FIXME:why we have a useless param ptr ?? - StorageActionLmmPtr write(const void* ptr, size_t size, surf_file_t fd);//FIXME:why we have a useless param ptr ?? - - size_t m_size; - size_t m_usedSize; - xbt_dynar_t p_writeActions; }; /********** @@ -66,44 +98,55 @@ typedef enum { READ=0, WRITE, STAT, OPEN, CLOSE, LS } e_surf_action_storage_type_t; -class StorageActionLmm : public ActionLmm { + +class StorageAction : virtual public Action { public: - StorageActionLmm(){}; - StorageActionLmm(ModelPtr model, double cost, bool failed, StoragePtr storage, e_surf_action_storage_type_t type); + StorageAction(){}; + StorageAction(ModelPtr /*model*/, double /*cost*/, bool /*failed*/, StoragePtr storage, e_surf_action_storage_type_t type) + : m_type(type), p_storage(storage) {}; + + + e_surf_action_storage_type_t m_type; + StoragePtr p_storage; + surf_file_t p_file; + xbt_dict_t p_lsDict; +}; + +class StorageActionLmm : public ActionLmm, public StorageAction { +public: + StorageActionLmm(){}; + StorageActionLmm(ModelPtr model, double cost, bool failed, StorageLmmPtr storage, e_surf_action_storage_type_t type); + void suspend(); int unref(); void cancel(); //FIXME:??void recycle(); - void suspend(); void resume(); bool isSuspended(); void setMaxDuration(double duration); void setPriority(double priority); - e_surf_action_storage_type_t m_type; - StoragePtr p_storage; - surf_file_t p_file; - xbt_dict_t p_lsDict; }; typedef struct s_storage_type { char *model; char *content; + char *content_type; char *type_id; xbt_dict_t properties; - size_t size; + sg_size_t size; } s_storage_type_t, *storage_type_t; typedef struct s_mount { - void *id; + void *storage; char *name; } s_mount_t, *mount_t; typedef struct surf_file { char *name; - char *storage; - size_t size; + char *mount; + sg_size_t size; } s_surf_file_t;