X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/db890fdba13d88ef85a2ac0ce39749ebfa835516..0077d829b7c3a7d012e8eb1a6cc36ae1f07f3834:/apt-pkg/acquire-item.h diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h index 0b80ca1de..3d411978e 100644 --- a/apt-pkg/acquire-item.h +++ b/apt-pkg/acquire-item.h @@ -1,19 +1,19 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: acquire-item.h,v 1.12 1998/12/11 06:32:34 jgg Exp $ +// $Id: acquire-item.h,v 1.25 2001/02/20 07:03:17 jgg Exp $ /* ###################################################################### Acquire Item - Item to acquire When an item is instantiated it will add it self to the local list in the Owner Acquire class. Derived classes will then call QueueURI to - register all the URI's they wish to fetch for at the initial moment. + 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. A Archive class is provided for downloading .deb files. It does Md5 - checking and source location. + checking and source location as well as a retry algorithm. ##################################################################### */ /*}}}*/ @@ -21,7 +21,7 @@ #define PKGLIB_ACQUIRE_ITEM_H #include -#include +#include #include #ifdef __GNUG__ @@ -33,10 +33,13 @@ class pkgAcquire::Item { protected: + // Some private helper methods for registering URIs pkgAcquire *Owner; inline void QueueURI(ItemDesc &Item) {Owner->Enqueue(Item);}; + inline void Dequeue() {Owner->Dequeue(this);}; + // Safe rename function with timestamp preservation void Rename(string From,string To); public: @@ -45,7 +48,8 @@ class pkgAcquire::Item enum {StatIdle, StatFetching, StatDone, StatError} Status; string ErrorText; unsigned long FileSize; - char *Mode; + unsigned long PartialSize; + const char *Mode; unsigned long ID; bool Complete; bool Local; @@ -55,14 +59,20 @@ class pkgAcquire::Item // File to write the fetch into string DestFile; - - virtual void Failed(string Message); - virtual void Done(string Message,unsigned long Size,string Md5Hash); + + // Action members invoked by the worker + virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); + virtual void Done(string Message,unsigned long Size,string Md5Hash, + pkgAcquire::MethodConfig *Cnf); virtual void Start(string Message,unsigned long Size); - virtual string Describe() = 0; - virtual string Custom600Headers() {return string();}; - + virtual string DescURI() = 0; + virtual void Finished() {}; + + // Inquire functions + virtual string MD5Sum() {return string();}; + pkgAcquire *GetOwner() {return Owner;}; + Item(pkgAcquire *Owner); virtual ~Item(); }; @@ -72,18 +82,21 @@ class pkgAcqIndex : public pkgAcquire::Item { protected: - const pkgSourceList::Item *Location; bool Decompression; bool Erase; pkgAcquire::ItemDesc Desc; + string RealURI; public: - virtual void Done(string Message,unsigned long Size,string Md5Hash); + // Specialized action members + virtual void Done(string Message,unsigned long Size,string Md5Hash, + pkgAcquire::MethodConfig *Cnf); virtual string Custom600Headers(); - virtual string Describe(); + virtual string DescURI() {return RealURI;}; - pkgAcqIndex(pkgAcquire *Owner,const pkgSourceList::Item *Location); + pkgAcqIndex(pkgAcquire *Owner,string URI,string URIDesc, + string ShortDesct); }; // Item class for index files @@ -91,16 +104,20 @@ class pkgAcqIndexRel : public pkgAcquire::Item { protected: - const pkgSourceList::Item *Location; pkgAcquire::ItemDesc Desc; + string RealURI; public: - virtual void Done(string Message,unsigned long Size,string Md5Hash); + // 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 Describe(); + virtual string DescURI() {return RealURI;}; - pkgAcqIndexRel(pkgAcquire *Owner,const pkgSourceList::Item *Location); + pkgAcqIndexRel(pkgAcquire *Owner,string URI,string URIDesc, + string ShortDesct); }; // Item class for archive files @@ -108,6 +125,7 @@ class pkgAcqArchive : public pkgAcquire::Item { protected: + // State information for the retry mechanism pkgCache::VerIterator Version; pkgAcquire::ItemDesc Desc; pkgSourceList *Sources; @@ -115,18 +133,44 @@ class pkgAcqArchive : public pkgAcquire::Item string MD5; string &StoreFilename; pkgCache::VerFileIterator Vf; - + unsigned int Retries; + + // Queue the next available file for download. bool QueueNext(); public: - virtual void Failed(string Message); - virtual void Done(string Message,unsigned long Size,string Md5Hash); - virtual string Describe(); + // 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 MD5Sum() {return MD5;}; + virtual string DescURI() {return Desc.URI;}; + virtual void Finished(); pkgAcqArchive(pkgAcquire *Owner,pkgSourceList *Sources, pkgRecords *Recs,pkgCache::VerIterator const &Version, string &StoreFilename); }; +// Fetch a generic file to the current directory +class pkgAcqFile : public pkgAcquire::Item +{ + pkgAcquire::ItemDesc Desc; + string Md5Hash; + unsigned int Retries; + + 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 MD5Sum() {return Md5Hash;}; + virtual string DescURI() {return Desc.URI;}; + + pkgAcqFile(pkgAcquire *Owner,string URI,string MD5,unsigned long Size, + string Desc,string ShortDesc); +}; + #endif