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