/* * This file is a part of Winix * and is not publicly distributed * * Copyright (c) 2009-2010, Tomasz Sowa * All rights reserved. * */ #ifndef headerfilecmslucorecoremounts #define headerfilecmslucorecoremounts #include #include #include #include "mount.h" #include "error.h" #include "dirs.h" #include "db/db.h" #include "request.h" #include "mountparser.h" class Mounts { public: /* mount point's types */ int AddMountType(const wchar_t * type); int AddMountType(const std::wstring & type); const std::wstring & GetMountType(int id); // id of a specific mount type (the id is always valid) int MountTypeCms() { return mount_type_cms; } int MountTypeThread() { return mount_type_thread; } // return -1 if there is no such a mount type // or index otherwhise int FindMountType(const std::wstring & type); /* file systems */ int AddMountFs(const wchar_t * fs); int AddMountFs(const std::wstring & fs); const std::wstring & GetMountFs(int id); // id of a specific file system (the id is always valid) int MountFsSimplefs() { return mount_fs_simplefs; } int MountFsHashfs() { return mount_fs_hashfs; } /* mount point's parameters */ int AddMountPar(const wchar_t * par); int AddMountPar(const std::wstring & par); const std::wstring & GetMountPar(int id); int MountParPage() { return mount_par_page; } int MountParThread() { return mount_par_thread; } int MountParCreatethreadOn() { return mount_par_createthread_on; } int MountParOnlyRootRemove() { return mount_par_only_root_remove; } int MountParEmacsOn() { return mount_par_emacs_on; } int MountParMkdirOn() { return mount_par_mkdir_on; } int MountParApp() { return mount_par_app; } int MountParHtmlTemplate() { return mount_par_html_template; } void SetDirs(Dirs * pdirs); void SetDb(Db * pdb); void SetRequest(Request * prequest); // dir_id, mount_point typedef std::map MountTab; Mounts(); void CreateMounts(); Error ReadMounts(const std::wstring & mounts); Error ReadMounts(); void CalcCurMount(); Mount * CalcMount(long dir_id); // current mount point // will not be null after calling CalcCurMount() or ReadMounts([...]) Mount * pmount; const MountTab * GetMountTab(); private: Db * db; Dirs * dirs; Request * request; const std::wstring empty_str; MountParser mount_parser; // cms // thread std::vector mount_type_tab; int mount_type_cms; int mount_type_thread; // simplefs // hashfs std::vector mount_fs_tab; int mount_fs_simplefs; int mount_fs_hashfs; // page // thread std::vector mount_par_tab; int mount_par_page; int mount_par_thread; int mount_par_createthread_on; int mount_par_only_root_remove; int mount_par_emacs_on; int mount_par_mkdir_on; int mount_par_app; int mount_par_html_template; MountTab mount_tab; void CreateMountType(); void CreateMountFs(); void CreateMountPar(); void MountCmsForRoot(); }; #endif