diff options
Diffstat (limited to 'apt-pkg/acquire.h')
-rw-r--r-- | apt-pkg/acquire.h | 64 |
1 files changed, 52 insertions, 12 deletions
diff --git a/apt-pkg/acquire.h b/apt-pkg/acquire.h index a4ea45bff..0d8803c1d 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.8 1998/11/05 07:21:41 jgg Exp $ +// $Id: acquire.h,v 1.9 1998/11/09 01:09:26 jgg Exp $ /* ###################################################################### Acquire - File Acquiration @@ -41,6 +41,7 @@ #include <unistd.h> +class pkgAcquireStatus; class pkgAcquire { public: @@ -49,6 +50,7 @@ class pkgAcquire class Queue; class Worker; struct MethodConfig; + struct ItemDesc; friend Item; friend Queue; @@ -61,8 +63,9 @@ class pkgAcquire Queue *Queues; Worker *Workers; MethodConfig *Configs; + pkgAcquireStatus *Log; unsigned long ToFetch; - + // Configurable parameters for the schedular enum {QueueHost,QueueAccess} QueueMode; bool Debug; @@ -73,7 +76,7 @@ class pkgAcquire void Add(Worker *Work); void Remove(Worker *Work); - void Enqueue(Item *Item,string URI,string Description); + void Enqueue(ItemDesc &Item); void Dequeue(Item *Item); string QueueName(string URI); @@ -88,11 +91,26 @@ class pkgAcquire MethodConfig *GetConfig(string Access); bool Run(); + + // Simple iteration mechanism + inline Worker *WorkersBegin() {return Workers;}; + Worker *WorkerStep(Worker *I); + inline Item **ItemsBegin() {return Items.begin();}; + inline Item **ItemsEnd() {return Items.end();}; - pkgAcquire(); + pkgAcquire(pkgAcquireStatus *Log = 0); ~pkgAcquire(); }; +// Description of an Item+URI +struct pkgAcquire::ItemDesc +{ + string URI; + string Description; + string ShortDesc; + Item *Owner; +}; + // List of possible items queued for download. class pkgAcquire::Queue { @@ -102,15 +120,19 @@ class pkgAcquire::Queue protected: // Queued item - struct QItem + struct QItem : pkgAcquire::ItemDesc { - QItem *Next; - - string URI; - string Description; - Item *Owner; + QItem *Next; pkgAcquire::Worker *Worker; - }; + + void operator =(pkgAcquire::ItemDesc const &I) + { + URI = I.URI; + Description = I.Description; + ShortDesc = I.ShortDesc; + Owner = I.Owner; + }; + }; // Name of the queue string Name; @@ -123,11 +145,12 @@ class pkgAcquire::Queue public: // Put an item into this queue - void Enqueue(Item *Owner,string URI,string Description); + void Enqueue(ItemDesc &Item); bool Dequeue(Item *Owner); // Find a Queued item QItem *FindItem(string URI,pkgAcquire::Worker *Owner); + bool ItemStart(QItem *Itm,unsigned long Size); bool ItemDone(QItem *Itm); bool Startup(); @@ -155,4 +178,21 @@ struct pkgAcquire::MethodConfig MethodConfig(); }; +class pkgAcquireStatus +{ + public: + + bool Update; + + // 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 Pulse(pkgAcquire *Owner) {}; + + pkgAcquireStatus() : Update(false) {}; + virtual ~pkgAcquireStatus() {}; +}; + #endif |