X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/7a7fa5f07e59bd17415cb0321d1f98527c2cfea4..36f610f18a9a12c02ba89c6bb84726f7ed3ba7ad:/apt-pkg/acquire.h?ds=sidebyside diff --git a/apt-pkg/acquire.h b/apt-pkg/acquire.h index c85a7aef7..156fc7aae 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.11 1998/11/12 04:10:55 jgg Exp $ +// $Id: acquire.h,v 1.20 1999/03/27 03:02:39 jgg Exp $ /* ###################################################################### Acquire - File Acquiration @@ -79,7 +79,7 @@ class pkgAcquire void Enqueue(ItemDesc &Item); void Dequeue(Item *Item); - string QueueName(string URI); + string QueueName(string URI,MethodConfig const *&Config); // FDSET managers for derived classes void SetFds(int &Fd,fd_set *RSet,fd_set *WSet); @@ -98,9 +98,19 @@ class pkgAcquire Worker *WorkerStep(Worker *I); inline Item **ItemsBegin() {return Items.begin();}; inline Item **ItemsEnd() {return Items.end();}; - + + // Iterate over queued Item URIs + class UriIterator; + UriIterator UriBegin(); + UriIterator UriEnd(); + // Cleans out the download dir bool Clean(string Dir); + + // Returns the size of the total download set + unsigned long TotalNeeded(); + unsigned long FetchNeeded(); + unsigned long PartialPresent(); pkgAcquire(pkgAcquireStatus *Log = 0); ~pkgAcquire(); @@ -119,6 +129,7 @@ struct pkgAcquire::ItemDesc class pkgAcquire::Queue { friend pkgAcquire; + friend pkgAcquire::UriIterator; Queue *Next; protected: @@ -145,6 +156,8 @@ class pkgAcquire::Queue QItem *Items; pkgAcquire::Worker *Workers; pkgAcquire *Owner; + signed long PipeDepth; + unsigned long MaxPipeDepth; public: @@ -166,6 +179,40 @@ class pkgAcquire::Queue ~Queue(); }; +class pkgAcquire::UriIterator +{ + pkgAcquire::Queue *CurQ; + pkgAcquire::Queue::QItem *CurItem; + + public: + + // Advance to the next item + inline void operator ++() {operator ++();}; + void operator ++(int) + { + CurItem = CurItem->Next; + while (CurItem == 0 && CurQ != 0) + { + CurItem = CurQ->Items; + CurQ = CurQ->Next; + } + }; + + // Accessors + inline pkgAcquire::ItemDesc const *operator ->() const {return CurItem;}; + inline bool operator !=(UriIterator const &rhs) const {return rhs.CurQ != CurQ || rhs.CurItem != CurItem;}; + inline bool operator ==(UriIterator const &rhs) const {return rhs.CurQ == CurQ && rhs.CurItem == CurItem;}; + + UriIterator(pkgAcquire::Queue *Q) : CurQ(Q), CurItem(0) + { + while (CurItem == 0 && CurQ != 0) + { + CurItem = CurQ->Items; + CurQ = CurQ->Next; + } + } +}; + // Configuration information from each method struct pkgAcquire::MethodConfig { @@ -175,10 +222,10 @@ struct pkgAcquire::MethodConfig string Version; bool SingleInstance; - bool PreScan; bool Pipeline; bool SendConfig; - + bool LocalOnly; + MethodConfig(); }; @@ -194,6 +241,8 @@ class pkgAcquireStatus unsigned long TotalBytes; unsigned long FetchedBytes; unsigned long ElapsedTime; + unsigned long TotalItems; + unsigned long CurrentItems; public: @@ -202,15 +251,18 @@ class pkgAcquireStatus // Called by items when they have finished a real download virtual void Fetched(unsigned long Size,unsigned long ResumePoint); + // Called to change media + 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 Fail(pkgAcquire::ItemDesc &Itm) {}; virtual void Pulse(pkgAcquire *Owner); virtual void Start(); virtual void Stop(); - + pkgAcquireStatus(); virtual ~pkgAcquireStatus() {}; };