#include "http.h"
-class MirrorMethod : public pkgAcqMethod
+class MirrorMethod : public HttpMethod
{
FetchResult Res;
- string Mirror;
- string BaseUri;
- string MirrorFile;
- bool HasMirrorFile;
+ // we simply transform between BaseUri and Mirror
+ string BaseUri; // the original mirror://... url
+ string Mirror; // the selected mirror uri (http://...)
+ vector<string> AllMirrors; // all available mirrors
+ string MirrorFile; // the file that contains the list of mirrors
+ bool DownloadedMirrorFile; // already downloaded this session
+
+ bool Debug;
protected:
- bool GetMirrorFile(string uri);
- bool SelectMirror();
+ bool DownloadMirrorFile(string uri);
+ string GetMirrorFileName(string uri);
+ bool InitMirrors();
+ bool TryNextMirror();
+ void CurrentQueueUriToMirror();
+ bool Clean(string dir);
+
+ // we need to overwrite those to transform the url back
+ virtual void Fail(string Why, bool Transient = false);
+ virtual void URIStart(FetchResult &Res);
+ virtual void URIDone(FetchResult &Res,FetchResult *Alt = 0);
+ virtual bool Configuration(string Message);
+
public:
MirrorMethod();
virtual bool Fetch(FetchItem *Itm);