00001
00002
00003
00004
00005
00006
00007
00008
00012 #ifndef ZYPP_STORAGE_BACKEND_H
00013 #define ZYPP_STORAGE_BACKEND_H
00014
00015 #include <iosfwd>
00016
00017 #include "zypp/base/PtrTypes.h"
00018 #include <zypp/Pathname.h>
00019 #include <zypp/Patch.h>
00020
00021 #include <zypp/target/store/PersistentStorage.h>
00022
00024 namespace zypp
00025 {
00026
00027 namespace storage
00028 {
00029
00031
00032
00033
00037 class Backend
00038 {
00039 friend std::ostream & operator<<( std::ostream & str, const Backend & obj );
00040 public:
00042 Backend(const Pathname &root);
00044 virtual ~Backend();
00045 virtual void doTest() = 0;
00046
00050 virtual bool isBackendInitialized() const = 0;
00054 virtual void initBackend() = 0;
00055
00059 virtual Date timestamp() const = 0;
00060
00064 virtual void storeObject( ResObject::constPtr resolvable ) = 0;
00068 virtual void deleteObject( ResObject::constPtr resolvable ) = 0;
00069
00073 virtual std::list<ResObject::Ptr> storedObjects() const = 0;
00077 virtual std::list<ResObject::Ptr> storedObjects(const Resolvable::Kind) const = 0;
00082 virtual std::list<ResObject::Ptr> storedObjects(const Resolvable::Kind, const std::string & name, bool partial_match = false) const = 0;
00083
00085
00087 public:
00088 virtual void setObjectFlag( ResObject::constPtr resolvable, const std::string &flag ) = 0;
00089 virtual void removeObjectFlag( ResObject::constPtr resolvable, const std::string &flag ) = 0;
00090 virtual std::set<std::string> objectFlags( ResObject::constPtr resolvable ) const = 0;
00091 virtual bool doesObjectHasFlag( ResObject::constPtr resolvable, const std::string &flag ) const = 0;
00092
00094
00096 public:
00097 virtual void setFlag( const std::string &key, const std::string &flag ) = 0;
00098 virtual void removeFlag( const std::string &key, const std::string &flag ) = 0;
00099 virtual std::set<std::string> flags( const std::string &key ) const = 0;
00100 virtual bool hasFlag( const std::string &key, const std::string &flag ) const = 0;
00101
00102 private:
00104 class Private;
00105 Private *d;
00106 };
00108
00110 std::ostream & operator<<( std::ostream & str, const Backend & obj );
00111
00113 }
00116 }
00118 #endif // DEVEL_DEVEL_DMACVICAR_BACKEND_H