]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/acquire-method.h
init: Add Dir::Bin::planners default entry
[apt.git] / apt-pkg / acquire-method.h
index 74489913fa775325a931d2936ddc1393e0e0b513..cab2bda4044dbc2de176226881b8b9d9c8753bc6 100644 (file)
@@ -1,6 +1,5 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: acquire-method.h,v 1.1 1998/10/30 07:53:35 jgg Exp $
 /* ######################################################################
 
    Acquire Method - Method helper class + functions
    
    ##################################################################### */
                                                                        /*}}}*/
+
+/** \addtogroup acquire
+ *  @{
+ *
+ *  \file acquire-method.h
+ */
+
 #ifndef PKGLIB_ACQUIRE_METHOD_H
 #define PKGLIB_ACQUIRE_METHOD_H
 
-#include <apt-pkg/configuration.h>
-#include <strutl.h>
+#include <apt-pkg/hashes.h>
+#include <apt-pkg/macros.h>
 
-#ifdef __GNUG__
-#pragma interface "apt-pkg/acquire-method.h"
-#endif 
+#include <stdarg.h>
+#include <time.h>
+
+#include <string>
+#include <vector>
+
+#ifndef APT_8_CLEANER_HEADERS
+#include <apt-pkg/configuration.h>
+#include <apt-pkg/strutl.h>
+#endif
 
 class pkgAcqMethod
 {
    protected:
-   
-   string CurrentURI;
-   string DestFile;
-   time_t LastModified;
 
-   vector<string> Messages;
+   struct FetchItem
+   {
+      FetchItem *Next;
+
+      std::string Uri;
+      std::string DestFile;
+      int DestFileFd;
+      time_t LastModified;
+      bool IndexFile;
+      bool FailIgnore;
+      HashStringList ExpectedHashes;
+      // a maximum size we will download, this can be the exact filesize
+      // for when we know it or a arbitrary limit when we don't know the
+      // filesize (like a InRelease file)
+      unsigned long long MaximumSize;
+
+      FetchItem();
+      virtual ~FetchItem();
+      private:
+      void * const d;
+   };
    
    struct FetchResult
    {
-      string MD5Sum;
+      HashStringList Hashes;
+      std::vector<std::string> GPGVOutput;
       time_t LastModified;
       bool IMSHit;
-      string Filename;
-      unsigned long Size;
+      std::string Filename;
+      unsigned long long Size;
+      unsigned long long ResumePoint;
+      
+      void TakeHashes(class Hashes &Hash);
       FetchResult();
+      virtual ~FetchResult();
+      private:
+      void * const d;
    };
-   
+
+   // State
+   std::vector<std::string> Messages;
+   FetchItem *Queue;
+   FetchItem *QueueBack;
+   std::string FailReason;
+   std::string UsedMirror;
+   std::string IP;
+
    // Handlers for messages
-   virtual bool Configuration(string Message);
-   virtual bool Fetch(string Message,URI Get) {return true;};
-   
+   virtual bool Configuration(std::string Message);
+   virtual bool Fetch(FetchItem * /*Item*/) {return true;};
+   virtual bool URIAcquire(std::string const &/*Message*/, FetchItem *Itm) { return Fetch(Itm); };
+
    // Outgoing messages
-   void Fail();
-   void Fail(string Why);
-//   void Log(const char *Format,...);
-   void URIStart(FetchResult &Res,unsigned long Resume = 0);
-   void URIDone(FetchResult &Res,FetchResult *Alt = 0);
-                
+   void Fail(bool Transient = false);
+   inline void Fail(const char *Why, bool Transient = false) {Fail(std::string(Why),Transient);};
+   virtual void Fail(std::string Why, bool Transient = false);
+   virtual void URIStart(FetchResult &Res);
+   virtual void URIDone(FetchResult &Res,FetchResult *Alt = 0);
+
+   bool MediaFail(std::string Required,std::string Drive);
+   virtual void Exit() {};
+
+   void PrintStatus(char const * const header, const char* Format, va_list &args) const;
+
    public:
-   
-   enum CnfFlags {SingleInstance = (1<<0), PreScan = (1<<1), 
-                  Pipeline = (1<<2), SendConfig = (1<<3)};
+   enum CnfFlags {SingleInstance = (1<<0),
+                  Pipeline = (1<<1), SendConfig = (1<<2),
+                  LocalOnly = (1<<3), NeedsCleanup = (1<<4), 
+                  Removable = (1<<5)};
 
-   int Run();
+   void Log(const char *Format,...);
+   void Status(const char *Format,...);
+   
+   void Redirect(const std::string &NewURI);
+   int Run(bool Single = false);
+   inline void SetFailReason(std::string Msg) {FailReason = Msg;};
+   inline void SetIP(std::string aIP) {IP = aIP;};
    
    pkgAcqMethod(const char *Ver,unsigned long Flags = 0);
-   virtual ~pkgAcqMethod() {};
+   virtual ~pkgAcqMethod();
+   void DropPrivsOrDie();
+   private:
+   APT_HIDDEN void Dequeue();
 };
 
+/** @} */
+
 #endif