Add bunch of missing includes to fix build with gcc 4.7
[apt.git] / apt-pkg / acquire-item.h
1 // -*- mode: c++; mode: fold -*-
2 // Description                                                          /*{{{*/
3 // $Id: acquire-item.h,v 1.26 2003/02/02 03:13:13 doogie Exp $
4 /* ######################################################################
5
6    Acquire Item - Item to acquire
7
8    When an item is instantiated it will add it self to the local list in
9    the Owner Acquire class. Derived classes will then call QueueURI to 
10    register all the URI's they wish to fetch at the initial moment.   
11    
12    Two item classes are provided to provide functionality for downloading
13    of Index files and downloading of Packages.
14    
15    A Archive class is provided for downloading .deb files. It does Md5
16    checking and source location as well as a retry algorithm.
17    
18    ##################################################################### */
19                                                                         /*}}}*/
20 #ifndef PKGLIB_ACQUIRE_ITEM_H
21 #define PKGLIB_ACQUIRE_ITEM_H
22
23 #include <apt-pkg/acquire.h>
24 #include <apt-pkg/indexfile.h>
25 #include <apt-pkg/pkgrecords.h>
26
27 // Item to acquire
28 class pkgAcquire::Item
29 {  
30    protected:
31    string Hash;
32    string HashType;
33    
34    // Some private helper methods for registering URIs
35    pkgAcquire *Owner;
36    inline void QueueURI(ItemDesc &Item)
37                  {Owner->Enqueue(Item);}
38    inline void Dequeue() {Owner->Dequeue(this);}
39    
40    // Safe rename function with timestamp preservation
41    void Rename(string From,string To);
42    
43    public:
44
45    // State of the item
46    /* CNC:2002-11-22
47     * Do not use anonyomus enums, as this breaks SWIG in some cases */
48    enum StatusFlags {StatIdle, StatFetching, StatDone, StatError} Status;
49    string ErrorText;
50    unsigned long FileSize;
51    unsigned long PartialSize;   
52    const char *Mode;
53    unsigned long ID;
54    bool Complete;
55    bool Local;
56
57    // Number of queues we are inserted into
58    unsigned int QueueCounter;
59    
60    // File to write the fetch into
61    string DestFile;
62
63    // Action members invoked by the worker
64    virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf);
65    virtual void Done(string Message,off_t Size,string AcqHash,
66                      pkgAcquire::MethodConfig *Cnf);
67    virtual void Start(string Message,unsigned long Size);
68    virtual string Custom600Headers() {return string();}
69    virtual string DescURI() = 0;
70    virtual void Finished() {}
71
72    // Inquire functions
73    virtual string Checksum() {return Hash;}
74    virtual string ChecksumType() {return HashType;}
75    pkgAcquire *GetOwner() {return Owner;}
76    
77    Item(pkgAcquire *Owner);
78    virtual ~Item();
79 };
80
81 // CNC:2002-07-03
82 class pkgRepository;
83
84 // Item class for index files
85 class pkgAcqIndex : public pkgAcquire::Item
86 {
87    protected:
88    
89    bool Decompression;
90    bool Erase;
91    pkgAcquire::ItemDesc Desc;
92    string RealURI;
93
94    // CNC:2002-07-03
95    pkgRepository *Repository;
96    
97    public:
98    
99    // Specialized action members
100    virtual void Done(string Message,off_t Size,string AcqHash,
101                      pkgAcquire::MethodConfig *Cnf);
102    virtual string Custom600Headers();
103    virtual string DescURI() {return RealURI;} // CNC:2003-02-14
104
105    // CNC:2002-07-03
106    pkgAcqIndex(pkgAcquire *Owner,pkgRepository *Repository,string URI,
107                string URIDesc,string ShortDesct);
108 };
109
110 // Item class for index files
111 class pkgAcqIndexRel : public pkgAcquire::Item
112 {
113    protected:
114    
115    pkgAcquire::ItemDesc Desc;
116    string RealURI;
117  
118    // CNC:2002-07-03
119    bool Authentication;
120    bool Master;
121    bool Erase;
122    pkgRepository *Repository;
123    
124    public:
125    
126    // Specialized action members
127    virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf);
128    virtual void Done(string Message,off_t Size,string AcqHash,
129                      pkgAcquire::MethodConfig *Cnf);   
130    virtual string Custom600Headers();
131    virtual string DescURI() {return RealURI;}
132    
133    // CNC:2002-07-03
134    pkgAcqIndexRel(pkgAcquire *Owner,pkgRepository *Repository,string URI,
135                   string URIDesc,string ShortDesc,bool Master=false);
136 };
137
138 // Item class for archive files
139 class pkgAcqArchive : public pkgAcquire::Item
140 {
141    protected:
142    
143    // State information for the retry mechanism
144    pkgCache::VerIterator Version;
145    pkgAcquire::ItemDesc Desc;
146    pkgSourceList *Sources;
147    pkgRecords *Recs;
148    string &StoreFilename;
149    pkgCache::VerFileIterator Vf;
150    unsigned int Retries;
151
152    // Queue the next available file for download.
153    bool QueueNext();
154    
155    public:
156    
157    // Specialized action members
158    virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf);
159    virtual void Done(string Message,off_t Size,string AcqHash,
160                      pkgAcquire::MethodConfig *Cnf);
161    virtual string DescURI() {return Desc.URI;}
162    virtual void Finished();
163
164    pkgAcqArchive(pkgAcquire *Owner,pkgSourceList *Sources,
165                  pkgRecords *Recs,pkgCache::VerIterator const &Version,
166                  string &StoreFilename);
167 };
168
169 // Fetch a generic file to the current directory
170 class pkgAcqFile : public pkgAcquire::Item
171 {
172    pkgAcquire::ItemDesc Desc;
173    unsigned int Retries;
174    
175    public:
176    
177    // Specialized action members
178    virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf);
179    virtual void Done(string Message,off_t Size,string AcqHash,
180                      pkgAcquire::MethodConfig *Cnf);
181    virtual string DescURI() {return Desc.URI;}
182    
183    pkgAcqFile(pkgAcquire *Owner,string URI,
184               string ExpectHash,string ExpectHashType, unsigned long Size,
185               string Desc,string ShortDesc);
186 };
187
188 #endif