From 7f4f260d732c849c1e88fcb91023faab5316d9c6 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sun, 13 Sep 2009 19:04:14 +0200 Subject: StorageManager can delete stored data now --- .../StorageBackendFile/StorageBackendFile.cpp | 22 ++++++++++++++++++++++ .../StorageBackendFile/StorageBackendFile.h | 4 ++++ 2 files changed, 26 insertions(+) (limited to 'src/modules') diff --git a/src/modules/StorageBackendFile/StorageBackendFile.cpp b/src/modules/StorageBackendFile/StorageBackendFile.cpp index 7c952bd..c8bc4f7 100644 --- a/src/modules/StorageBackendFile/StorageBackendFile.cpp +++ b/src/modules/StorageBackendFile/StorageBackendFile.cpp @@ -116,6 +116,18 @@ std::set StorageBackendFile::list(const std::string &type) throw (C return ret; } + +bool StorageBackendFile::exists(const std::string &type, const std::string &name) throw (Core::Exception) { + boost::shared_lock lock(mutex); + + if(!configured) + throw Core::Exception(Core::Exception::NOT_AVAILABLE); + + boost::filesystem::path path = getFileName(type, name); + + return boost::filesystem::is_regular_file(path); +} + void StorageBackendFile::store(const std::string &type, const std::string &name, const Common::XmlData *data) throw (Core::Exception) { boost::lock_guard lock(mutex); @@ -138,6 +150,16 @@ boost::shared_ptr StorageBackendFile::load(const std::string &t return boost::shared_ptr(new Common::XmlData(path.file_string())); } +void StorageBackendFile::remove(const std::string &type, const std::string &name) throw (Core::Exception) { + boost::lock_guard lock(mutex); + + if(!configured) + throw Core::Exception(Core::Exception::NOT_AVAILABLE); + + boost::filesystem::path path = getFileName(type, name); + boost::filesystem::remove(path); +} + } } } diff --git a/src/modules/StorageBackendFile/StorageBackendFile.h b/src/modules/StorageBackendFile/StorageBackendFile.h index 45f4f98..5cce4fc 100644 --- a/src/modules/StorageBackendFile/StorageBackendFile.h +++ b/src/modules/StorageBackendFile/StorageBackendFile.h @@ -51,9 +51,13 @@ class StorageBackendFile : public Common::StorageBackend, private Core::Configur 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 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); -- cgit v1.2.3