X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/024d1123bf43ec616da66c2481a8ee877e00b8cb..97720af361b9f208f72ee31749f69f3800265923:/apt-pkg/acquire.h?ds=sidebyside diff --git a/apt-pkg/acquire.h b/apt-pkg/acquire.h index 6a1583cca..27bb3d363 100644 --- a/apt-pkg/acquire.h +++ b/apt-pkg/acquire.h @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: acquire.h,v 1.21 1999/06/13 05:06:40 jgg Exp $ +// $Id: acquire.h,v 1.29.2.1 2003/12/24 23:09:17 mdz Exp $ /* ###################################################################### Acquire - File Acquiration @@ -35,6 +35,9 @@ #include #include +using std::vector; +using std::string; + #ifdef __GNUG__ #pragma interface "apt-pkg/acquire.h" #endif @@ -52,8 +55,11 @@ class pkgAcquire class Worker; struct MethodConfig; struct ItemDesc; - friend Item; - friend Queue; + friend class Item; + friend class Queue; + + typedef vector::iterator ItemIterator; + typedef vector::const_iterator ItemCIterator; protected: @@ -82,8 +88,8 @@ class pkgAcquire string QueueName(string URI,MethodConfig const *&Config); // FDSET managers for derived classes - void SetFds(int &Fd,fd_set *RSet,fd_set *WSet); - void RunFds(fd_set *RSet,fd_set *WSet); + virtual void SetFds(int &Fd,fd_set *RSet,fd_set *WSet); + virtual void RunFds(fd_set *RSet,fd_set *WSet); // A queue calls this when it dequeues an item void Bump(); @@ -94,13 +100,14 @@ class pkgAcquire enum RunResult {Continue,Failed,Cancelled}; - RunResult Run(); - + RunResult Run(int PulseIntervall=500000); + void Shutdown(); + // Simple iteration mechanism inline Worker *WorkersBegin() {return Workers;}; Worker *WorkerStep(Worker *I); - inline Item **ItemsBegin() {return Items.begin();}; - inline Item **ItemsEnd() {return Items.end();}; + inline ItemIterator ItemsBegin() {return Items.begin();}; + inline ItemIterator ItemsEnd() {return Items.end();}; // Iterate over queued Item URIs class UriIterator; @@ -111,12 +118,12 @@ class pkgAcquire bool Clean(string Dir); // Returns the size of the total download set - unsigned long TotalNeeded(); - unsigned long FetchNeeded(); - unsigned long PartialPresent(); - + double TotalNeeded(); + double FetchNeeded(); + double PartialPresent(); + pkgAcquire(pkgAcquireStatus *Log = 0); - ~pkgAcquire(); + virtual ~pkgAcquire(); }; // Description of an Item+URI @@ -131,8 +138,9 @@ struct pkgAcquire::ItemDesc // List of possible items queued for download. class pkgAcquire::Queue { - friend pkgAcquire; - friend pkgAcquire::UriIterator; + friend class pkgAcquire; + friend class pkgAcquire::UriIterator; + friend class pkgAcquire::Worker; Queue *Next; protected: @@ -174,7 +182,7 @@ class pkgAcquire::Queue bool ItemDone(QItem *Itm); bool Startup(); - bool Shutdown(); + bool Shutdown(bool Final); bool Cycle(); void Bump(); @@ -228,7 +236,9 @@ struct pkgAcquire::MethodConfig bool Pipeline; bool SendConfig; bool LocalOnly; - + bool NeedsCleanup; + bool Removable; + MethodConfig(); }; @@ -238,11 +248,11 @@ class pkgAcquireStatus struct timeval Time; struct timeval StartTime; - unsigned long LastBytes; + double LastBytes; double CurrentCPS; - unsigned long CurrentBytes; - unsigned long TotalBytes; - unsigned long FetchedBytes; + double CurrentBytes; + double TotalBytes; + double FetchedBytes; unsigned long ElapsedTime; unsigned long TotalItems; unsigned long CurrentItems; @@ -250,7 +260,8 @@ class pkgAcquireStatus public: bool Update; - + bool MorePulses; + // Called by items when they have finished a real download virtual void Fetched(unsigned long Size,unsigned long ResumePoint); @@ -258,10 +269,10 @@ class pkgAcquireStatus virtual bool MediaChange(string Media,string Drive) = 0; // Each of these is called by the workers when an event occures - virtual void IMSHit(pkgAcquire::ItemDesc &Itm) {}; - virtual void Fetch(pkgAcquire::ItemDesc &Itm) {}; - virtual void Done(pkgAcquire::ItemDesc &Itm) {}; - virtual void Fail(pkgAcquire::ItemDesc &Itm) {}; + virtual void IMSHit(pkgAcquire::ItemDesc &/*Itm*/) {}; + virtual void Fetch(pkgAcquire::ItemDesc &/*Itm*/) {}; + virtual void Done(pkgAcquire::ItemDesc &/*Itm*/) {}; + virtual void Fail(pkgAcquire::ItemDesc &/*Itm*/) {}; virtual bool Pulse(pkgAcquire *Owner); // returns false on user cancel virtual void Start(); virtual void Stop();