CacheStore.h

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------\
00002 |                          ____ _   __ __ ___                          |
00003 |                         |__  / \ / / . \ . \                         |
00004 |                           / / \ V /|  _/  _/                         |
00005 |                          / /__ | | | | | |                           |
00006 |                         /_____||_| |_| |_|                           |
00007 |                                                                      |
00008 \---------------------------------------------------------------------*/
00009 
00010 #ifndef ZYPP_CacheStore_H
00011 #define ZYPP_CacheStore_H
00012 
00013 #include <iosfwd>
00014 #include <string>
00015 
00016 #include "zypp/base/ReferenceCounted.h"
00017 #include "zypp/base/NonCopyable.h"
00018 #include "zypp/base/PtrTypes.h"
00019 #include "zypp/Pathname.h"
00020 #include "zypp/NVRA.h"
00021 #include "zypp/ZConfig.h"
00022 #include "zypp/capability/CapabilityImpl.h"
00023 #include "zypp/capability/Capabilities.h"
00024 
00025 #include "zypp/data/ResolvableDataConsumer.h"
00026 #include "zypp/data/RecordId.h"
00027 
00028 #include "zypp/base/PtrTypes.h"
00029 #include "zypp/RepoStatus.h"
00030 #include "zypp/ProgressData.h"
00031 #include "zypp/cache/Attribute.h"
00032 
00034 namespace zypp
00035 { 
00036 
00037   namespace cache
00038   { 
00039 
00053     class CacheStore : public data::ResolvableDataConsumer
00054     {
00055     public:
00056 
00057       CacheStore();
00058       virtual ~CacheStore();
00059 
00069       CacheStore( const Pathname &dbdir );
00070 
00074       void commit();
00075 
00085       virtual data::RecordId consumePackage(const data::RecordId &repository_id,
00086                                             const data::Package_Ptr & package);
00087 
00095       virtual data::RecordId consumeSourcePackage( const data::RecordId &catalog_id,
00096                                                    const data::SrcPackage_Ptr & srcpackage );
00097 
00105       virtual data::RecordId consumePatch( const data::RecordId &repository_id,
00106                                            const data::Patch_Ptr & patch );
00107 
00120       virtual data::RecordId consumePackageAtom( const data::RecordId &repository_id,
00121                                                  const data::PackageAtom_Ptr & atom );
00122 
00130       virtual data::RecordId consumeMessage( const data::RecordId & repository_id,
00131                                              const data::Message_Ptr & message);
00132 
00140       virtual data::RecordId consumeScript( const data::RecordId & repository_id,
00141                                             const data::Script_Ptr & script);
00142 
00150       virtual data::RecordId consumePattern( const data::RecordId & repository_id,
00151                                              const data::Pattern_Ptr & pattern );
00152 
00160       virtual data::RecordId consumeProduct( const data::RecordId &repository_id,
00161                                              const data::Product_Ptr & product );
00162 
00172       virtual data::RecordId consumeChangelog( const data::RecordId & resolvable_id,
00173                                                const Changelog & changelog );
00174 
00184       virtual data::RecordId consumeFilelist( const data::RecordId & resolvable_id,
00185                                               const data::Filenames & filenames );
00186       
00199        virtual void consumeDiskUsage( const data::RecordId &resolvable_id,
00200                                       const DiskUsage &disk );
00201 
00202 
00211       virtual void updatePackageLang( const data::RecordId & resolvable_id,
00212                                       const data::Packagebase_Ptr & data_r );
00214       public:
00239       data::RecordId appendResolvable( const data::RecordId &repository_id,
00240                                        const Resolvable::Kind &kind,
00241                                        const NVRA &nvra,
00242                                        const data::Dependencies &deps );
00243 
00254       data::RecordId appendResolvable( const data::RecordId &repository_id,
00255                                        const Resolvable::Kind &kind,
00256                                        const NVRA &nvra,
00257                                        const data::Dependencies &deps,
00258                                        const data::RecordId &shared_id );
00270       void appendDependencies( const data::RecordId &resolvable_id,
00271                                const data::Dependencies &dependencies );
00272 
00285       void appendDependencyList( const data::RecordId &resolvable_id,
00286                                  zypp::Dep deptype,
00287                                  const data::DependencyList &dlist );
00288 
00301       void appendDependency( const data::RecordId &resolvable_id,
00302                              zypp::Dep deptype,
00303                              capability::CapabilityImpl::Ptr cap );
00304 
00320       void appendNamedDependency( const data::RecordId &, zypp::Dep,
00321                                   capability::NamedCap::Ptr);
00322 
00338       void appendFileDependency( const data::RecordId &, zypp::Dep,
00339                                  capability::FileCap::Ptr);
00340 
00356       void appendModaliasDependency( const data::RecordId &resolvable_id,
00357                                      zypp::Dep deptype,
00358                                      capability::ModaliasCap::Ptr cap);
00359 
00375       void appendHalDependency( const data::RecordId &resolvable_id,
00376                                       zypp::Dep deptype,
00377                                       capability::HalCap::Ptr cap );
00378 
00394       void appendFilesystemDependency( const data::RecordId &resolvable_id,
00395                                        zypp::Dep deptype,
00396                                        capability::FilesystemCap::Ptr cap );
00397       
00413       void appendSplitDependency( const data::RecordId &resolvable_id,
00414                                   zypp::Dep deptype,
00415                                   capability::SplitCap::Ptr cap );
00416       
00432       void appendUnknownDependency( const data::RecordId &resolvable_id,
00433                                     zypp::Dep deptype,
00434                                     capability::CapabilityImpl::Ptr cap );
00435 
00442       data::RecordId appendPatchRpm( const data::RecordId &repo_id,
00443                                      const data::PatchRpm_Ptr & prpm);
00444 
00445 
00452       data::RecordId appendDeltaRpm( const data::RecordId &repo_id,
00453                                      const data::DeltaRpm_Ptr & drpm);
00454 
00455 
00468       data::RecordId lookupOrAppendType( const std::string &klass,
00469                                          const std::string &name );
00471       data::RecordId lookupOrAppendType( const Attribute &attr )
00472       { return lookupOrAppendType( attr.klass, attr.name ); }
00473 
00483       data::RecordId lookupOrAppendRepository( const std::string &alias );
00484 
00500       void setSharedData( const data::RecordId &resolvable_id,
00501                           const data::RecordId &shared_id );
00502 
00510       void appendNumericAttribute( const data::RecordId &resolvable_id,
00511                                    const std::string &klass,
00512                                    const std::string &name,
00513                                    int value );
00515       void appendNumericAttribute( const data::RecordId &resolvable_id,
00516                                    const Attribute& attr,
00517                                    int value )
00518       { appendNumericAttribute( resolvable_id, attr.klass, attr.name, value ); }
00519 
00527       void appendTranslatedStringAttribute( const data::RecordId &resolvable_id,
00528                                             const std::string &klass,
00529                                             const std::string &name,
00530                                             const TranslatedText &text );
00532       void appendTranslatedStringAttribute( const data::RecordId &resolvable_id,
00533                                             const Attribute& attr,
00534                                             const TranslatedText &text )
00535       { appendTranslatedStringAttribute( resolvable_id, attr.klass, attr.name, text ); }
00536 
00545       void appendStringAttributeTranslation( const data::RecordId &resolvable_id,
00546                                              const Locale &locale,
00547                                              const std::string &klass,
00548                                              const std::string &name,
00549                                              const std::string &text );
00551       void appendStringAttributeTranslation( const data::RecordId &resolvable_id,
00552                                              const Locale &locale,
00553                                              const Attribute& attr,
00554                                              const std::string &text )
00555       { appendStringAttributeTranslation( resolvable_id, locale, attr.klass, attr.name, text ); }
00556 
00564       void appendStringAttribute( const data::RecordId &resolvable_id,
00565                                   const std::string &klass,
00566                                   const std::string &name,
00567                                   const std::string &value );
00569       void appendStringAttribute( const data::RecordId &resolvable_id,
00570                                   const Attribute& attr,
00571                                   const std::string &value )
00572       { appendStringAttribute( resolvable_id, attr.klass, attr.name, value ); }
00573 
00580       void appendStringAttribute( const data::RecordId &resolvable_id,
00581                                   const data::RecordId &type_id,
00582                                   const std::string &value );
00583 
00599       template <class _Iterator>
00600       void appendStringContainerAttribute( const data::RecordId &resolvable_id,
00601                                            const std::string &klass,
00602                                            const std::string &name,
00603                                            _Iterator begin,
00604                                            _Iterator end )
00605       {
00606         std::string value = str::join(begin, end, ZConfig::instance().cacheDBSplitJoinSeparator());
00607         appendStringAttribute( resolvable_id, klass, name, value );
00608       }
00610       template <class _Iterator>
00611       void appendStringContainerAttribute( const data::RecordId &resolvable_id,
00612                                            const Attribute& attr,
00613                                            _Iterator begin,
00614                                            _Iterator end )
00615       { appendStringContainerAttribute( resolvable_id, attr.klass, attr.name, begin, end ); }
00616 
00625       template <class _Container>
00626       void appendStringContainerAttribute( const data::RecordId &resolvable_id,
00627                                            const std::string &klass,
00628                                            const std::string &name,
00629                                            const _Container & container )
00630       { appendStringContainerAttribute( resolvable_id, klass, name, container.begin(), container.end() ); }
00632       template <class _Container>
00633       void appendStringContainerAttribute( const data::RecordId &resolvable_id,
00634                                            const Attribute& attr,
00635                                            const _Container & container )
00636       { appendStringContainerAttribute( resolvable_id, attr.klass, attr.name, container ); }
00637 
00650       void updateRepositoryStatus( const data::RecordId &id,
00651                                    const RepoStatus &status );
00652 
00663       void cleanRepository( const data::RecordId &id,
00664                             const ProgressData::ReceiverFnc & progressrcv = ProgressData::ReceiverFnc() );
00665 
00676       void cleanRepository( const std::string &alias,
00677                             const ProgressData::ReceiverFnc & progressrcv = ProgressData::ReceiverFnc() );
00678 
00691       RepoStatus repositoryStatus( const data::RecordId &id );
00692 
00705       RepoStatus repositoryStatus( const std::string &alias );
00706 
00712       bool isCached( const std::string &alias );
00713 
00722       data::RecordId lookupRepository( const std::string &alias );
00723 
00724 
00732       data::RecordId lookupOrAppendFile( const Pathname &path );
00733 
00741       data::RecordId lookupOrAppendName( const std::string &name );
00742 
00750       data::RecordId lookupOrAppendDirName( const std::string &name );
00751 
00759       data::RecordId lookupOrAppendFileName( const std::string &name );
00760 
00761     protected:
00767 //       data::RecordId appendDependencyEntry( const data::RecordId &,
00768 //                                             zypp::Dep, const Resolvable::Kind & );
00769 
00770       void appendStringAttribute( const data::RecordId &resolvable_id,
00771                                   const data::RecordId &lang_id,
00772                                   const data::RecordId &type_id,
00773                                   const std::string &value );
00774 
00781       void appendNumericAttribute( const data::RecordId &resolvable_id,
00782                                    const data::RecordId &type_id,
00783                                    int value );
00784 
00793       void appendBooleanAttribute( const data::RecordId & resolvable_id,
00794                                    const std::string & klass,
00795                                    const std::string & name,
00796                                    bool value);
00798       void appendBooleanAttribute( const data::RecordId & resolvable_id,
00799                                    const Attribute& attr,
00800                                    bool value)
00801       { appendBooleanAttribute( resolvable_id, attr.klass, attr.name, value ); }
00802 
00803 
00809       void appendResObjectAttributes( const data::RecordId &rid,
00810                                       const data::ResObject_Ptr & res );
00811 
00812       void appendPackageBaseAttributes(const data::RecordId & pkgid,
00813                                        const data::Packagebase_Ptr & package);
00815 
00816 
00817     private:
00819       class Impl;
00821       RW_pointer<Impl> _pimpl;
00822     };
00823   }
00824 }
00825 
00826 #endif
00827 

Generated on Tue Sep 25 19:23:00 2007 for libzypp by  doxygen 1.5.3