]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/acquire-item.h
Fixed WaitFD
[apt.git] / apt-pkg / acquire-item.h
index 676766dbc1255f4dfc0eb7a57890224b0da5ff59..fd01bbb9a32c6323bdcf4d9f9fe2710a971308ee 100644 (file)
@@ -1,19 +1,19 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: acquire-item.h,v 1.13 1999/01/30 06:07:24 jgg Exp $
+// $Id: acquire-item.h,v 1.16 1999/02/01 02:22:11 jgg Exp $
 /* ######################################################################
 
    Acquire Item - Item to acquire
 
    When an item is instantiated it will add it self to the local list in
    the Owner Acquire class. Derived classes will then call QueueURI to 
 /* ######################################################################
 
    Acquire Item - Item to acquire
 
    When an item is instantiated it will add it self to the local list in
    the Owner Acquire class. Derived classes will then call QueueURI to 
-   register all the URI's they wish to fetch for at the initial moment.   
+   register all the URI's they wish to fetch at the initial moment.   
    
    Two item classes are provided to provide functionality for downloading
    of Index files and downloading of Packages.
    
    A Archive class is provided for downloading .deb files. It does Md5
    
    Two item classes are provided to provide functionality for downloading
    of Index files and downloading of Packages.
    
    A Archive class is provided for downloading .deb files. It does Md5
-   checking and source location.
+   checking and source location as well as a retry algorithm.
    
    ##################################################################### */
                                                                        /*}}}*/
    
    ##################################################################### */
                                                                        /*}}}*/
@@ -33,10 +33,13 @@ class pkgAcquire::Item
 {  
    protected:
    
 {  
    protected:
    
+   // Some private helper methods for registering URIs
    pkgAcquire *Owner;
    inline void QueueURI(ItemDesc &Item)
                  {Owner->Enqueue(Item);};
    pkgAcquire *Owner;
    inline void QueueURI(ItemDesc &Item)
                  {Owner->Enqueue(Item);};
+   inline void Dequeue() {Owner->Dequeue(this);};
    
    
+   // Safe rename function with timestamp preservation
    void Rename(string From,string To);
    
    public:
    void Rename(string From,string To);
    
    public:
@@ -55,15 +58,17 @@ class pkgAcquire::Item
    
    // File to write the fetch into
    string DestFile;
    
    // File to write the fetch into
    string DestFile;
-   
-   virtual void Failed(string Message);
+
+   // Action members invoked by the worker
+   virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf);
    virtual void Done(string Message,unsigned long Size,string Md5Hash);
    virtual void Start(string Message,unsigned long Size);
    virtual void Done(string Message,unsigned long Size,string Md5Hash);
    virtual void Start(string Message,unsigned long Size);
+   virtual string Custom600Headers() {return string();};
+   
+   // Inquire functions
    virtual string MD5Sum() {return string();};
    virtual string Describe() = 0;
    virtual string MD5Sum() {return string();};
    virtual string Describe() = 0;
-   
-   virtual string Custom600Headers() {return string();};
-      
+         
    Item(pkgAcquire *Owner);
    virtual ~Item();
 };
    Item(pkgAcquire *Owner);
    virtual ~Item();
 };
@@ -80,6 +85,7 @@ class pkgAcqIndex : public pkgAcquire::Item
    
    public:
    
    
    public:
    
+   // Specialized action members
    virtual void Done(string Message,unsigned long Size,string Md5Hash);   
    virtual string Custom600Headers();
    virtual string Describe();
    virtual void Done(string Message,unsigned long Size,string Md5Hash);   
    virtual string Custom600Headers();
    virtual string Describe();
@@ -97,6 +103,8 @@ class pkgAcqIndexRel : public pkgAcquire::Item
    
    public:
    
    
    public:
    
+   // Specialized action members
+   virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf);
    virtual void Done(string Message,unsigned long Size,string Md5Hash);   
    virtual string Custom600Headers();
    virtual string Describe();
    virtual void Done(string Message,unsigned long Size,string Md5Hash);   
    virtual string Custom600Headers();
    virtual string Describe();
@@ -109,6 +117,7 @@ class pkgAcqArchive : public pkgAcquire::Item
 {
    protected:
    
 {
    protected:
    
+   // State information for the retry mechanism
    pkgCache::VerIterator Version;
    pkgAcquire::ItemDesc Desc;
    pkgSourceList *Sources;
    pkgCache::VerIterator Version;
    pkgAcquire::ItemDesc Desc;
    pkgSourceList *Sources;
@@ -116,15 +125,18 @@ class pkgAcqArchive : public pkgAcquire::Item
    string MD5;
    string &StoreFilename;
    pkgCache::VerFileIterator Vf;
    string MD5;
    string &StoreFilename;
    pkgCache::VerFileIterator Vf;
-   
+   unsigned int Retries;
+
+   // Queue the next available file for download.
    bool QueueNext();
    
    public:
    
    bool QueueNext();
    
    public:
    
-   virtual void Failed(string Message);
-   virtual string MD5Sum() {return MD5;};
+   // Specialized action members
+   virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf);
    virtual void Done(string Message,unsigned long Size,string Md5Hash);
    virtual string Describe();
    virtual void Done(string Message,unsigned long Size,string Md5Hash);
    virtual string Describe();
+   virtual string MD5Sum() {return MD5;};
    
    pkgAcqArchive(pkgAcquire *Owner,pkgSourceList *Sources,
                 pkgRecords *Recs,pkgCache::VerIterator const &Version,
    
    pkgAcqArchive(pkgAcquire *Owner,pkgSourceList *Sources,
                 pkgRecords *Recs,pkgCache::VerIterator const &Version,