/* * StorageBackendFile.h * * Copyright (C) 2009 Matthias Schiffer * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by the * Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License along * with this program. If not, see . */ #ifndef MAD_MODULES_STORAGEBACKENDFILE_STORAGEBACKENDFILE_H_ #define MAD_MODULES_STORAGEBACKENDFILE_STORAGEBACKENDFILE_H_ #include #include #include #include #include #include namespace Mad { namespace Modules { namespace StorageBackendFile { class StorageBackendFile : public Common::StorageBackend, private Core::Configurable, private boost::noncopyable { private: Common::Application *application; boost::filesystem::path storageRoot; bool configured; boost::shared_mutex mutex; boost::filesystem::path getFileName(const std::string &type, const std::string &name); protected: virtual bool handleConfigEntry(const Core::ConfigEntry &entry, bool handled); virtual void configFinished(); virtual std::set listTypes() throw (Core::Exception); virtual std::set list(const std::string &type) throw (Core::Exception); virtual bool exists(const std::string &type, const std::string &name) throw (Core::Exception); virtual void store(const std::string &type, const std::string &name, const Common::XmlData *data) throw (Core::Exception); virtual boost::shared_ptr load(const std::string &type, const std::string &name) throw (Core::Exception); virtual void copy(const std::string &type, const std::string &name, const std::string &newName) throw (Core::Exception); virtual void rename(const std::string &type, const std::string &name, const std::string &newName) throw (Core::Exception); virtual void remove(const std::string &type, const std::string &name) throw (Core::Exception); public: StorageBackendFile(Common::Application *application0) : application(application0), configured(false) { application->getConfigManager()->registerConfigurable(this); } virtual ~StorageBackendFile() { application->getConfigManager()->unregisterConfigurable(this); } }; } } } #endif /* MAD_MODULES_STORAGEBACKENDFILE_STORAGEBACKENDFILE_H_ */