the Owner Acquire class. Derived classes will then call QueueURI to
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.
+ Three item classes are provided to provide functionality for
+ downloading of Index, Translation and Packages files.
A Archive class is provided for downloading .deb files. It does Md5
checking and source location as well as a retry algorithm.
public:
// State of the item
- enum {StatIdle, StatFetching, StatDone, StatError, StatAuthError} Status;
+ enum {StatIdle, StatFetching, StatDone, StatError,
+ StatAuthError, StatTransientNetworkError} Status;
string ErrorText;
unsigned long FileSize;
unsigned long PartialSize;
virtual ~Item();
};
-// item for index diffs
-class pkgAcqIndexDiffs : public pkgAcquire::Item
-{
- protected:
- bool Debug;
- pkgAcquire::ItemDesc Desc;
- string RealURI;
- string ExpectedMD5;
- // this is the SHA-1 sum we expect after the patching
- string ServerSha1;
- string CurrentPackagesFile;
- string Description;
- vector<string> needed_files;
-
- public:
-
- // Specialized action members
- virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf);
- virtual void Done(string Message,unsigned long Size,string Md5Hash,
- pkgAcquire::MethodConfig *Cnf);
- virtual string DescURI() {return RealURI + "Index";};
-
-
- // various helpers
- bool ParseIndexDiff(string IndexDiffFile);
- void QueueDiffIndex(string URI);
- bool QueueNextDiff();
- bool ApplyDiff(string PatchFile);
- void Finish(bool allDone=false);
-
- pkgAcqIndexDiffs(pkgAcquire *Owner,string URI,string URIDesc,
- string ShortDesct, string ExpectedMD5,
- vector<string> diffs=vector<string>());
-};
-
// Item class for index files
class pkgAcqIndex : public pkgAcquire::Item
{
pkgAcquire::ItemDesc Desc;
string RealURI;
string ExpectedMD5;
+ string CompressionExtension;
public:
virtual void Done(string Message,unsigned long Size,string Md5Hash,
pkgAcquire::MethodConfig *Cnf);
virtual string Custom600Headers();
- virtual string DescURI() {return RealURI + ".gz";};
+ virtual string DescURI() {return RealURI + CompressionExtension;};
pkgAcqIndex(pkgAcquire *Owner,string URI,string URIDesc,
string ShortDesct, string ExpectedMD5, string compressExt="");
};
+// Item class for translated package index files
+class pkgAcqIndexTrans : public pkgAcqIndex
+{
+ public:
+
+ virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf);
+ pkgAcqIndexTrans(pkgAcquire *Owner,string URI,string URIDesc,
+ string ShortDesct);
+};
+
struct IndexTarget
{
string URI;
const vector<struct IndexTarget*>* IndexTargets;
indexRecords* MetaIndexParser;
bool AuthPass;
+ // required to deal gracefully with problems caused by incorrect ims hits
+ bool IMSHit;
- bool VerifyVendor();
+ bool VerifyVendor(string Message);
void RetrievalDone(string Message);
void AuthDone(string Message);
void QueueIndexes(bool verify);
pkgAcquire::MethodConfig *Cnf);
virtual string MD5Sum() {return Md5Hash;};
virtual string DescURI() {return Desc.URI;};
-
- pkgAcqFile(pkgAcquire *Owner,string URI,string MD5,unsigned long Size,
- string Desc,string ShortDesc);
+
+ // If DestFilename is empty, download to DestDir/<basename> if
+ // DestDir is non-empty, $CWD/<basename> otherwise. If
+ // DestFilename is NOT empty, DestDir is ignored and DestFilename
+ // is the absolute name to which the file should be downloaded.
+ pkgAcqFile(pkgAcquire *Owner, string URI, string MD5, unsigned long Size,
+ string Desc, string ShortDesc,
+ const string &DestDir="", const string &DestFilename="");
};
#endif