/usr/include/apt-pkg/acquire-method.h is in libapt-pkg-dev 1.6.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | // -*- mode: cpp; mode: fold -*-
// Description /*{{{*/
/* ######################################################################
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/hashes.h>
#include <apt-pkg/macros.h>
#include <stdarg.h>
#include <time.h>
#include <string>
#include <unordered_map>
#include <vector>
#ifndef APT_8_CLEANER_HEADERS
#include <apt-pkg/configuration.h>
#include <apt-pkg/strutl.h>
#endif
class pkgAcqMethod
{
protected:
struct FetchItem
{
FetchItem *Next;
std::string Uri;
std::string DestFile;
int DestFileFd;
time_t LastModified;
bool IndexFile;
bool FailIgnore;
HashStringList ExpectedHashes;
// a maximum size we will download, this can be the exact filesize
// for when we know it or a arbitrary limit when we don't know the
// filesize (like a InRelease file)
unsigned long long MaximumSize;
FetchItem();
virtual ~FetchItem();
std::string Proxy(); // For internal use only.
void Proxy(std::string const &Proxy) APT_HIDDEN;
private:
struct Private;
Private *const d;
};
struct FetchResult
{
HashStringList Hashes;
std::vector<std::string> GPGVOutput;
time_t LastModified;
bool IMSHit;
std::string Filename;
unsigned long long Size;
unsigned long long ResumePoint;
void TakeHashes(class Hashes &Hash);
FetchResult();
virtual ~FetchResult();
private:
void * const d;
};
// State
std::vector<std::string> Messages;
FetchItem *Queue;
FetchItem *QueueBack;
std::string FailReason;
std::string UsedMirror;
std::string IP;
// Handlers for messages
virtual bool Configuration(std::string Message);
virtual bool Fetch(FetchItem * /*Item*/) {return true;};
virtual bool URIAcquire(std::string const &/*Message*/, FetchItem *Itm) { return Fetch(Itm); };
// Outgoing messages
void Fail(bool Transient = false);
inline void Fail(const char *Why, bool Transient = false) {Fail(std::string(Why),Transient);};
virtual void Fail(std::string Why, bool Transient = false);
virtual void URIStart(FetchResult &Res);
virtual void URIDone(FetchResult &Res,FetchResult *Alt = 0);
void SendMessage(std::string const &header, std::unordered_map<std::string, std::string> &&fields);
bool MediaFail(std::string Required,std::string Drive);
virtual void Exit() {};
void PrintStatus(char const * const header, const char* Format, va_list &args) const;
public:
enum CnfFlags
{
SingleInstance = (1 << 0),
Pipeline = (1 << 1),
SendConfig = (1 << 2),
LocalOnly = (1 << 3),
NeedsCleanup = (1 << 4),
Removable = (1 << 5),
AuxRequests = (1 << 6)
};
void Log(const char *Format,...);
void Status(const char *Format,...);
void Redirect(const std::string &NewURI);
int Run(bool Single = false);
inline void SetFailReason(std::string Msg) {FailReason = Msg;};
inline void SetIP(std::string aIP) {IP = aIP;};
pkgAcqMethod(const char *Ver,unsigned long Flags = 0);
virtual ~pkgAcqMethod();
void DropPrivsOrDie();
private:
APT_HIDDEN void Dequeue();
};
/** @} */
#endif
|