- initial import of revision 374 from cnc
[apt.git] / apt-pkg / acquire-method.h
1 // -*- mode: cpp; mode: fold -*-
2 // Description                                                          /*{{{*/
3 // $Id: acquire-method.h,v 1.1 2002/07/23 17:54:50 niemeyer Exp $
4 /* ######################################################################
5
6    Acquire Method - Method helper class + functions
7    
8    These functions are designed to be used within the method task to
9    ease communication with APT.
10    
11    ##################################################################### */
12                                                                         /*}}}*/
13 #ifndef PKGLIB_ACQUIRE_METHOD_H
14 #define PKGLIB_ACQUIRE_METHOD_H
15
16 #include <apt-pkg/configuration.h>
17 #include <apt-pkg/strutl.h>
18
19 #ifdef __GNUG__
20 #pragma interface "apt-pkg/acquire-method.h"
21 #endif 
22
23 class Hashes;
24 class pkgAcqMethod
25 {
26    protected:
27
28    // CNC:2002-07-11
29    unsigned long Flags;
30
31    struct FetchItem
32    {
33       FetchItem *Next;
34
35       string Uri;
36       string DestFile;
37       time_t LastModified;
38       bool IndexFile;
39    };
40    
41    struct FetchResult
42    {
43       string MD5Sum;
44       string SHA1Sum;
45       // CNC:2002-07-03
46       string SignatureFP;
47       time_t LastModified;
48       bool IMSHit;
49       string Filename;
50       unsigned long Size;
51       unsigned long ResumePoint;
52       
53       void TakeHashes(Hashes &Hash);
54       FetchResult();
55    };
56
57    // State
58    vector<string> Messages;
59    FetchItem *Queue;
60    FetchItem *QueueBack;
61    string FailExtra;
62    
63    // Handlers for messages
64    virtual bool Configuration(string Message);
65    virtual bool Fetch(FetchItem * /*Item*/) {return true;};
66    
67    // Outgoing messages
68    void Fail(bool Transient = false);
69    inline void Fail(const char *Why, bool Transient = false) {Fail(string(Why),Transient);};
70    void Fail(string Why, bool Transient = false);
71    void URIStart(FetchResult &Res);
72    void URIDone(FetchResult &Res,FetchResult *Alt = 0);
73    bool MediaFail(string Required,string Drive);
74    virtual void Exit() {};
75    // CNC:2004-04-27
76    virtual string PreferredURI() { return ""; };
77
78    public:
79
80    enum CnfFlags {SingleInstance = (1<<0),
81                   Pipeline = (1<<1), SendConfig = (1<<2),
82                   LocalOnly = (1<<3), NeedsCleanup = (1<<4), 
83                   // CNC:2004-04-27
84                   Removable = (1<<5), HasPreferredURI = (1<<6)};
85
86    void Log(const char *Format,...);
87    void Status(const char *Format,...);
88    
89    int Run(bool Single = false);
90    inline void SetFailExtraMsg(string Msg) {FailExtra = Msg;};
91    
92    pkgAcqMethod(const char *Ver,unsigned long Flags = 0);
93    virtual ~pkgAcqMethod() {};
94 };
95
96 #endif
97
98 // vim:sts=3:sw=3