From f74d99c6a78caafdc6e32d8cb135683b7154795c Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 28 May 2016 15:40:59 +0200 Subject: eipp: provide the internal planer as an external one Testing the current implementation can benefit from being able to be feed an EIPP request and produce a fully compliant response. It is also a great test for EIPP in general. --- apt-pkg/edsp/edspindexfile.cc | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) (limited to 'apt-pkg/edsp/edspindexfile.cc') diff --git a/apt-pkg/edsp/edspindexfile.cc b/apt-pkg/edsp/edspindexfile.cc index e2863a2cc..042a88cf9 100644 --- a/apt-pkg/edsp/edspindexfile.cc +++ b/apt-pkg/edsp/edspindexfile.cc @@ -69,6 +69,25 @@ pkgCacheListParser * edspIndex::CreateListParser(FileFd &Pkg) return newError ? NULL : Parser; } /*}}}*/ +// EIPP Index /*{{{*/ +eippIndex::eippIndex(std::string const &File) : edspLikeIndex(File) +{ +} +std::string eippIndex::GetComponent() const +{ + return "eipp"; +} +pkgCacheListParser * eippIndex::CreateListParser(FileFd &Pkg) +{ + if (Pkg.IsOpen() == false) + return NULL; + _error->PushToStack(); + pkgCacheListParser * const Parser = new eippListParser(&Pkg); + bool const newError = _error->PendingError(); + _error->MergeWithStack(); + return newError ? NULL : Parser; +} + /*}}}*/ // Index File types for APT /*{{{*/ class APT_HIDDEN edspIFType: public pkgIndexFile::Type @@ -82,12 +101,28 @@ class APT_HIDDEN edspIFType: public pkgIndexFile::Type edspIFType() {Label = "EDSP scenario file";}; }; APT_HIDDEN edspIFType _apt_Edsp; - const pkgIndexFile::Type *edspIndex::GetType() const { return &_apt_Edsp; } + +class APT_HIDDEN eippIFType: public pkgIndexFile::Type +{ + public: + virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &) const APT_OVERRIDE + { + // we don't have a record parser for this type as the file is not presistent + return NULL; + }; + eippIFType() {Label = "EIPP scenario file";}; +}; +APT_HIDDEN eippIFType _apt_Eipp; +const pkgIndexFile::Type *eippIndex::GetType() const +{ + return &_apt_Eipp; +} /*}}}*/ edspLikeIndex::~edspLikeIndex() {} edspIndex::~edspIndex() {} +eippIndex::~eippIndex() {} -- cgit v1.2.3