diff options
author | Arch Librarian <arch@canonical.com> | 2004-09-20 16:51:22 +0000 |
---|---|---|
committer | Arch Librarian <arch@canonical.com> | 2004-09-20 16:51:22 +0000 |
commit | 8267fe24f77f6982b4d62d8d5d43cd1efc907136 (patch) | |
tree | a5e7e3846a8522862736afbe1f1b6e7928775c6f /apt-pkg/acquire.h | |
parent | fbfb2a7cad49c38a8a830ceadbc20ab89f683718 (diff) | |
download | apt-8267fe24f77f6982b4d62d8d5d43cd1efc907136.tar.gz |
More or less working acquire system
Author: jgg
Date: 1998-11-09 01:09:19 GMT
More or less working acquire system
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 |