SVN commit 1191219 by jmthomas: Use libapt-pkg's pkgCacheFile for a bunch of cache-related stuff inside QApt::Cache, rather than rolling our own. This results in the nice loss of 51 lines of code. The class will stay due to the trustCache stuff it implements (and obviously binary/API compatibility) Whenever the need arises for a QApt2 (API break) this will likely become a thin(er) wrapper over the pkgCacheFile, with its main objective being to provide a Qt-style API. (Hopefully a trustCache solution will make it in to APT in the meanwhile, so that we and synaptic don't have to have two imlementations)
But, in the meantime, less stuff to maintain/worry about breaking. :) CCMAIL:[email protected] M +10 -62 cache.cpp --- trunk/extragear/sysadmin/libqapt/src/cache.cpp #1191218:1191219 @@ -22,11 +22,7 @@ #include <QtCore/QCoreApplication> -#include <apt-pkg/depcache.h> -#include <apt-pkg/error.h> -#include <apt-pkg/sourcelist.h> -#include <apt-pkg/pkgcachegen.h> -#include <apt-pkg/policy.h> +#include <apt-pkg/cachefile.h> namespace QApt { @@ -45,34 +41,20 @@ { public: CachePrivate() - : mmap(0) - , cache(0) - , policy(0) - , depCache(0) - , list(new pkgSourceList) + : cache(new pkgCacheFile()) , trustCache(new QHash<pkgCache::PkgFileIterator, pkgIndexFile*>) { } virtual ~CachePrivate() { - delete list; delete cache; - delete policy; - delete depCache; - delete mmap; delete trustCache; } - CacheBuildProgress m_progressMeter; - MMap *mmap; + CacheBuildProgress progressMeter; + pkgCacheFile *cache; - pkgCache *cache; - pkgPolicy *policy; - - pkgDepCache *depCache; - pkgSourceList *list; - QHash<pkgCache::PkgFileIterator, pkgIndexFile*> *trustCache; }; @@ -92,51 +74,17 @@ Q_D(Cache); // delete any old structures - if (d->cache) { - delete d->cache; - d->cache = 0; - } - if (d->policy) { - delete d->policy; - d->policy = 0; - } - if (d->depCache) { - delete d->depCache; - d->depCache = 0; - } - if (d->mmap) { - delete d->mmap; - d->mmap = 0; - } + d->cache->Close(); - // Read the sources list - if (!d->list->ReadMainList()) { - return false; - } - - pkgMakeStatusCache(*(d->list), d->m_progressMeter, &(d->mmap), true); - d->m_progressMeter.Done(); - if (_error->PendingError()) { - return false; - } - // Open the cache file - d->cache = new pkgCache(d->mmap); - d->policy = new pkgPolicy(d->cache); - if (!ReadPinFile(*(d->policy)) || !ReadPinDir(*(d->policy))) { + if (!d->cache->ReadOnlyOpen(&d->progressMeter)) { return false; } - if (_error->PendingError()) { - return false; - } - - d->depCache = new pkgDepCache(d->cache, d->policy); - d->depCache->Init(&(d->m_progressMeter)); - d->trustCache->clear(); - if (d->depCache->DelCount() != 0 || d->depCache->InstCount() != 0) { + if (d->cache->GetDepCache()->DelCount() != 0 || + d->cache->GetDepCache()->InstCount() != 0) { return false; } @@ -147,14 +95,14 @@ { Q_D(const Cache); - return d->depCache; + return d->cache->GetDepCache(); } pkgSourceList *Cache::list() const { Q_D(const Cache); - return d->list; + return d->cache->GetSourceList(); } QHash<pkgCache::PkgFileIterator, pkgIndexFile*> *Cache::trustCache() const -- Does not work with preferences.d https://bugs.launchpad.net/bugs/668297 You received this bug notification because you are a member of Kubuntu Bugs, which is subscribed to qapt in ubuntu. -- kubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/kubuntu-bugs
