// -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
-// $Id: acquire.h,v 1.21 1999/06/13 05:06:40 jgg Exp $
+// $Id: acquire.h,v 1.28 2001/02/20 07:03:17 jgg Exp $
/* ######################################################################
Acquire - File Acquiration
class Worker;
struct MethodConfig;
struct ItemDesc;
- friend Item;
- friend Queue;
+ friend class Item;
+ friend class Queue;
protected:
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();
enum RunResult {Continue,Failed,Cancelled};
RunResult Run();
-
+ void Shutdown();
+
// Simple iteration mechanism
inline Worker *WorkersBegin() {return Workers;};
Worker *WorkerStep(Worker *I);
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
// 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:
bool ItemDone(QItem *Itm);
bool Startup();
- bool Shutdown();
+ bool Shutdown(bool Final);
bool Cycle();
void Bump();
bool Pipeline;
bool SendConfig;
bool LocalOnly;
-
+ bool NeedsCleanup;
+ bool Removable;
+
MethodConfig();
};
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;
public:
bool Update;
-
+ bool MorePulses;
+
// Called by items when they have finished a real download
virtual void Fetched(unsigned long Size,unsigned long ResumePoint);
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();