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
|
#ifndef PKGLIB_METAINDEX_H
#define PKGLIB_METAINDEX_H
#include <apt-pkg/indexfile.h>
#include <apt-pkg/init.h>
#include <cstddef>
#include <string>
#include <vector>
class pkgAcquire;
class IndexTarget;
class pkgCacheGenerator;
class OpProgress;
class metaIndexPrivate;
class APT_PUBLIC metaIndex
{
public:
struct checkSum
{
std::string MetaKeyFilename;
HashStringList Hashes;
unsigned long long Size;
};
enum APT_HIDDEN TriState {
TRI_YES, TRI_DONTCARE, TRI_NO, TRI_UNSET
};
enum class APT_HIDDEN Flag
{
DEB822 = 0x01,
};
private:
metaIndexPrivate * const d;
protected:
std::vector <pkgIndexFile *> *Indexes;
// parsed from the sources.list
const char *Type;
std::string URI;
std::string Dist;
TriState Trusted;
std::string SignedBy;
// parsed from a file
std::string Suite;
std::string Codename;
std::string Origin;
std::string Label;
std::string Version;
signed short DefaultPin;
std::string ReleaseNotes;
time_t Date;
time_t ValidUntil;
bool SupportsAcquireByHash;
std::map<std::string, checkSum *> Entries;
TriState LoadedSuccessfully;
public:
// Various accessors
std::string GetURI() const;
std::string GetDist() const;
const char* GetType() const;
TriState GetTrusted() const;
std::string GetSignedBy() const;
std::string GetOrigin() const;
std::string GetLabel() const;
std::string GetVersion() const;
std::string GetCodename() const;
std::string GetSuite() const;
std::string GetReleaseNotes() const;
signed short GetDefaultPin() const;
bool GetSupportsAcquireByHash() const;
time_t GetValidUntil() const;
time_t GetDate() const;
virtual time_t GetNotBefore() const = 0;
#ifdef APT_COMPILING_APT
bool HasFlag(Flag flag) const;
#endif
void SetFlag(Flag flag) APT_HIDDEN;
std::string GetExpectedDist() const;
bool CheckDist(std::string const &MaybeDist) const;
// Interface for acquire
virtual std::string Describe() const;
virtual std::string ArchiveURI(std::string const& File) const = 0;
virtual bool GetIndexes(pkgAcquire *Owner, bool const &GetAll=false) = 0;
virtual std::vector<IndexTarget> GetIndexTargets() const = 0;
virtual std::vector<pkgIndexFile *> *GetIndexFiles() = 0;
virtual bool IsTrusted() const = 0;
virtual bool Load(std::string const &Filename, std::string * const ErrorText) = 0;
bool Load(std::string *const ErrorText);
/** @return a new metaIndex object based on this one, but without information from #Load */
virtual metaIndex * UnloadedClone() const = 0;
// the given metaIndex is potentially invalid after this call and should be deleted
void swapLoad(metaIndex * const OldMetaIndex);
// Lookup functions for parsed Hashes
checkSum *Lookup(std::string const &MetaKey) const;
/** \brief tests if a checksum for this file is available */
bool Exists(std::string const &MetaKey) const;
std::vector<std::string> MetaKeys() const;
TriState GetLoadedSuccessfully() const;
// Interfaces for pkgCacheGen
virtual pkgCache::RlsFileIterator FindInCache(pkgCache &Cache, bool const ModifyCheck) const;
virtual bool Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const;
metaIndex(std::string const &URI, std::string const &Dist,
char const * const Type);
virtual ~metaIndex();
virtual bool IsArchitectureSupported(std::string const &arch) const;
virtual bool IsArchitectureAllSupportedFor(IndexTarget const &target) const;
virtual bool HasSupportForComponent(std::string const &component) const;
#ifdef APT_COMPILING_APT
bool IsTrustedSet() { return Trusted == TRI_YES; }
#endif
};
#endif
|