X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/40285ffdcd559895ff43488eacf4dd5e980c7227..a345a69945548525d5219fcd18e3754f4d252bfd:/apt-pkg/acquire-item.h diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h index 62162743d..3a0a690e1 100644 --- a/apt-pkg/acquire-item.h +++ b/apt-pkg/acquire-item.h @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: acquire-item.h,v 1.26 2003/02/02 03:13:13 doogie Exp $ +// $Id: acquire-item.h,v 1.26.2.3 2004/01/02 18:51:00 mdz Exp $ /* ###################################################################### Acquire Item - Item to acquire @@ -9,8 +9,8 @@ the Owner Acquire class. Derived classes will then call QueueURI to register all the URI's they wish to fetch at the initial moment. - Two item classes are provided to provide functionality for downloading - of Index files and downloading of Packages. + Three item classes are provided to provide functionality for + downloading of Index, Translation and Packages files. A Archive class is provided for downloading .deb files. It does Md5 checking and source location as well as a retry algorithm. @@ -22,7 +22,10 @@ #include #include +#include +#include #include +#include #ifdef __GNUG__ #pragma interface "apt-pkg/acquire-item.h" @@ -45,7 +48,8 @@ class pkgAcquire::Item public: // State of the item - enum {StatIdle, StatFetching, StatDone, StatError} Status; + enum {StatIdle, StatFetching, StatDone, StatError, + StatAuthError, StatTransientNetworkError} Status; string ErrorText; unsigned long FileSize; unsigned long PartialSize; @@ -67,11 +71,13 @@ class pkgAcquire::Item virtual void Start(string Message,unsigned long Size); virtual string Custom600Headers() {return string();}; virtual string DescURI() = 0; + virtual string ShortDesc() {return DescURI();} virtual void Finished() {}; // Inquire functions virtual string MD5Sum() {return string();}; pkgAcquire *GetOwner() {return Owner;}; + virtual bool IsTrusted() {return false;}; Item(pkgAcquire *Owner); virtual ~Item(); @@ -86,38 +92,98 @@ class pkgAcqIndex : public pkgAcquire::Item bool Erase; pkgAcquire::ItemDesc Desc; string RealURI; - + string ExpectedMD5; + string CompressionExtension; + public: // Specialized action members + virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); virtual void Done(string Message,unsigned long Size,string Md5Hash, pkgAcquire::MethodConfig *Cnf); virtual string Custom600Headers(); - virtual string DescURI() {return RealURI + ".gz";}; + virtual string DescURI() {return RealURI + CompressionExtension;}; pkgAcqIndex(pkgAcquire *Owner,string URI,string URIDesc, - string ShortDesct); + string ShortDesct, string ExpectedMD5, string compressExt=""); }; -// Item class for index files -class pkgAcqIndexRel : public pkgAcquire::Item +// Item class for translated package index files +class pkgAcqIndexTrans : public pkgAcqIndex +{ + public: + + virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); + pkgAcqIndexTrans(pkgAcquire *Owner,string URI,string URIDesc, + string ShortDesct); +}; + +struct IndexTarget +{ + string URI; + string Description; + string ShortDesc; + string MetaKey; +}; + +// Item class for index signatures +class pkgAcqMetaSig : public pkgAcquire::Item { protected: pkgAcquire::ItemDesc Desc; - string RealURI; - + string RealURI,MetaIndexURI,MetaIndexURIDesc,MetaIndexShortDesc; + indexRecords* MetaIndexParser; + const vector* IndexTargets; + public: // Specialized action members virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); virtual void Done(string Message,unsigned long Size,string Md5Hash, - pkgAcquire::MethodConfig *Cnf); + pkgAcquire::MethodConfig *Cnf); virtual string Custom600Headers(); - virtual string DescURI() {return RealURI;}; + virtual string DescURI() {return RealURI; }; + + pkgAcqMetaSig(pkgAcquire *Owner,string URI,string URIDesc, string ShortDesc, + string MetaIndexURI, string MetaIndexURIDesc, string MetaIndexShortDesc, + const vector* IndexTargets, + indexRecords* MetaIndexParser); +}; + +// Item class for index signatures +class pkgAcqMetaIndex : public pkgAcquire::Item +{ + protected: + + pkgAcquire::ItemDesc Desc; + string RealURI; // FIXME: is this redundant w/ Desc.URI? + string SigFile; + const vector* IndexTargets; + indexRecords* MetaIndexParser; + bool AuthPass; + // required to deal gracefully with problems caused by incorrect ims hits + bool IMSHit; + + bool VerifyVendor(string Message); + void RetrievalDone(string Message); + void AuthDone(string Message); + void QueueIndexes(bool verify); + + public: - pkgAcqIndexRel(pkgAcquire *Owner,string URI,string URIDesc, - string ShortDesct); + // Specialized action members + virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); + virtual void Done(string Message,unsigned long Size,string Md5Hash, + pkgAcquire::MethodConfig *Cnf); + virtual string Custom600Headers(); + virtual string DescURI() {return RealURI; }; + + pkgAcqMetaIndex(pkgAcquire *Owner, + string URI,string URIDesc, string ShortDesc, + string SigFile, + const vector* IndexTargets, + indexRecords* MetaIndexParser); }; // Item class for archive files @@ -134,6 +200,7 @@ class pkgAcqArchive : public pkgAcquire::Item string &StoreFilename; pkgCache::VerFileIterator Vf; unsigned int Retries; + bool Trusted; // Queue the next available file for download. bool QueueNext(); @@ -146,7 +213,9 @@ class pkgAcqArchive : public pkgAcquire::Item pkgAcquire::MethodConfig *Cnf); virtual string MD5Sum() {return MD5;}; virtual string DescURI() {return Desc.URI;}; + virtual string ShortDesc() {return Desc.ShortDesc;}; virtual void Finished(); + virtual bool IsTrusted(); pkgAcqArchive(pkgAcquire *Owner,pkgSourceList *Sources, pkgRecords *Recs,pkgCache::VerIterator const &Version, @@ -168,9 +237,14 @@ class pkgAcqFile : public pkgAcquire::Item pkgAcquire::MethodConfig *Cnf); virtual string MD5Sum() {return Md5Hash;}; virtual string DescURI() {return Desc.URI;}; - - pkgAcqFile(pkgAcquire *Owner,string URI,string MD5,unsigned long Size, - string Desc,string ShortDesc); + + // If DestFilename is empty, download to DestDir/ if + // DestDir is non-empty, $CWD/ otherwise. If + // DestFilename is NOT empty, DestDir is ignored and DestFilename + // is the absolute name to which the file should be downloaded. + pkgAcqFile(pkgAcquire *Owner, string URI, string MD5, unsigned long Size, + string Desc, string ShortDesc, + const string &DestDir="", const string &DestFilename=""); }; #endif