X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/0118833a3b3e65ad7296863aa7d49574eb615f83..bebdca4bf63ae661c60bc1e0f4e03e6bbb7a7cc5:/apt-pkg/acquire-item.h diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h index 6ab8859e4..3079c68ef 100644 --- a/apt-pkg/acquire-item.h +++ b/apt-pkg/acquire-item.h @@ -1,17 +1,20 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: acquire-item.h,v 1.1 1998/10/15 06:59:59 jgg Exp $ +// $Id: acquire-item.h,v 1.19 1999/04/11 21:23:09 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 as well as a retry algorithm. + ##################################################################### */ /*}}}*/ #ifndef PKGLIB_ACQUIRE_ITEM_H @@ -19,6 +22,7 @@ #include #include +#include #ifdef __GNUG__ #pragma interface "apt-pkg/acquire-item.h" @@ -29,17 +33,43 @@ class pkgAcquire::Item { protected: + // Some private helper methods for registering URIs pkgAcquire *Owner; - inline void QueueURI(string URI) {Owner->Enqueue(this,URI);}; + 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: + // State of the item + enum {StatIdle, StatFetching, StatDone, StatError} Status; + string ErrorText; + unsigned long FileSize; + unsigned long PartialSize; + char *Mode; + unsigned long ID; + bool Complete; + bool Local; + + // Number of queues we are inserted into unsigned int QueueCounter; - string Description; - virtual string ToFile() = 0; - virtual void Failed() {}; + // File to write the fetch into + string DestFile; + + // Action members invoked by the worker + virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); + virtual void Done(string Message,unsigned long Size,string Md5Hash); + virtual void Start(string Message,unsigned long Size); + virtual string Custom600Headers() {return string();}; + virtual string DescURI() = 0; + // Inquire functions + virtual string MD5Sum() {return string();}; + Item(pkgAcquire *Owner); virtual ~Item(); }; @@ -50,10 +80,16 @@ class pkgAcqIndex : public pkgAcquire::Item protected: const pkgSourceList::Item *Location; + bool Decompression; + bool Erase; + pkgAcquire::ItemDesc Desc; public: - virtual string ToFile(); + // Specialized action members + virtual void Done(string Message,unsigned long Size,string Md5Hash); + virtual string Custom600Headers(); + virtual string DescURI() {return Location->PackagesURI();}; pkgAcqIndex(pkgAcquire *Owner,const pkgSourceList::Item *Location); }; @@ -64,13 +100,65 @@ class pkgAcqIndexRel : public pkgAcquire::Item protected: const pkgSourceList::Item *Location; + pkgAcquire::ItemDesc Desc; public: - virtual string ToFile(); - + // Specialized action members + virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); + virtual void Done(string Message,unsigned long Size,string Md5Hash); + virtual string Custom600Headers(); + virtual string DescURI() {return Location->ReleaseURI();}; + pkgAcqIndexRel(pkgAcquire *Owner,const pkgSourceList::Item *Location); }; +// Item class for archive files +class pkgAcqArchive : public pkgAcquire::Item +{ + protected: + + // State information for the retry mechanism + pkgCache::VerIterator Version; + pkgAcquire::ItemDesc Desc; + pkgSourceList *Sources; + pkgRecords *Recs; + string MD5; + string &StoreFilename; + pkgCache::VerFileIterator Vf; + unsigned int Retries; + + // Queue the next available file for download. + bool QueueNext(); + + public: + + // Specialized action members + virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); + virtual void Done(string Message,unsigned long Size,string Md5Hash); + virtual string MD5Sum() {return MD5;}; + virtual string DescURI() {return Desc.URI;}; + + 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 MD5; + + public: + + // Specialized action members + virtual void Done(string Message,unsigned long Size,string Md5Hash); + virtual string MD5Sum() {return MD5;}; + virtual string DescURI() {return Desc.URI;}; + + pkgAcqFile(pkgAcquire *Owner,string URI,string MD5,unsigned long Size, + string Desc,string ShortDesc); +}; #endif