]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/acquire-item.h
provide a constexpr char[] overload for APT::StringView
[apt.git] / apt-pkg / acquire-item.h
index 4d235dce2a5f36870d7fe70ee76afbf2a11b7eb1..306b1772a77be02c52d99bb7e9c3afe7ce595267 100644 (file)
 #include <map>
 
 #ifndef APT_8_CLEANER_HEADERS
-#include <apt-pkg/vendor.h>
 #include <apt-pkg/sourcelist.h>
 #include <apt-pkg/pkgrecords.h>
-#include <apt-pkg/indexrecords.h>
 #endif
 
 /** \addtogroup acquire
  *  \file acquire-item.h
  */
 
-class indexRecords;
 class pkgRecords;
 class pkgSourceList;
 class pkgAcqMetaClearSig;
 class pkgAcqIndexMergeDiffs;
+class metaIndex;
 
 class pkgAcquire::Item : public WeakPointable                          /*{{{*/
 /** \brief Represents the process by which a pkgAcquire object should
@@ -107,7 +105,7 @@ class pkgAcquire::Item : public WeakPointable                               /*{{{*/
    /** \brief If not \b NULL, contains the name of a subprocess that
     *  is operating on this object (for instance, "gzip" or "gpgv").
     */
-   APT_DEPRECATED const char *Mode;
+   APT_DEPRECATED_MSG("Use the std::string member ActiveSubprocess instead") const char *Mode;
 
    /** \brief contains the name of the subprocess that is operating on this object
     * (for instance, "gzip", "rred" or "gpgv"). This is obsoleting #Mode from above
@@ -178,6 +176,28 @@ class pkgAcquire::Item : public WeakPointable                              /*{{{*/
     */
    virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf);
 
+   /** \brief Invoked by the acquire worker to check if the successfully
+    * fetched object is also the objected we wanted to have.
+    *
+    *  Note that the object might \e not have been written to
+    *  DestFile; check for the presence of an Alt-Filename entry in
+    *  Message to find the file to which it was really written.
+    *
+    *  This is called before Done is called and can prevent it by returning
+    *  \b false which will result in Failed being called instead.
+    *
+    *  You should prefer to use this method over calling Failed() from Done()
+    *  as this has e.g. the wrong progress reporting.
+    *
+    *  \param Message Data from the acquire method.  Use LookupTag()
+    *  to parse it.
+    *  \param Cnf The method via which the object was fetched.
+    *
+    *  \sa pkgAcqMethod
+    */
+   virtual bool VerifyDone(std::string const &Message,
+        pkgAcquire::MethodConfig const * const Cnf);
+
    /** \brief Invoked by the acquire worker when the object was
     *  fetched successfully.
     *
@@ -351,7 +371,7 @@ class APT_HIDDEN pkgAcqTransactionItem: public pkgAcquire::Item             /*{{{*/
    IndexTarget const Target;
    HashStringList GetExpectedHashesFor(std::string const &MetaKey) const;
 
-   bool QueueURI(pkgAcquire::ItemDesc &Item);
+   bool QueueURI(pkgAcquire::ItemDesc &Item) APT_OVERRIDE;
 
    public:
    /** \brief storge name until a transaction is finished */
@@ -366,10 +386,10 @@ class APT_HIDDEN pkgAcqTransactionItem: public pkgAcquire::Item           /*{{{*/
    };
    virtual bool TransactionState(TransactionStates const state);
 
-   virtual std::string DescURI() const { return Target.URI; }
-   virtual HashStringList GetExpectedHashes() const;
+   virtual std::string DescURI() const APT_OVERRIDE { return Target.URI; }
+   virtual HashStringList GetExpectedHashes() const APT_OVERRIDE;
    virtual std::string GetMetaKey() const;
-   virtual bool HashesRequired() const;
+   virtual bool HashesRequired() const APT_OVERRIDE;
 
 
    pkgAcqTransactionItem(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager, IndexTarget const &Target);
@@ -389,7 +409,7 @@ class APT_HIDDEN pkgAcqMetaBase : public pkgAcqTransactionItem              /*{{{*/
    /** \brief The index files which should be looked up in the meta-index
     *  and then downloaded.
     */
-   std::vector<IndexTarget> const IndexTargets;
+   std::vector<IndexTarget> IndexTargets;
 
    /** \brief If \b true, the index's signature is currently being verified.
     */
@@ -419,7 +439,7 @@ class APT_HIDDEN pkgAcqMetaBase : public pkgAcqTransactionItem              /*{{{*/
    /** \brief Queue the downloaded Signature for verification */
    void QueueForSignatureVerify(pkgAcqTransactionItem * const I, std::string const &File, std::string const &Signature);
 
-   virtual std::string Custom600Headers() const;
+   virtual std::string Custom600Headers() const APT_OVERRIDE;
 
    /** \brief Called when authentication succeeded.
     *
@@ -442,15 +462,15 @@ class APT_HIDDEN pkgAcqMetaBase : public pkgAcqTransactionItem            /*{{{*/
     */
    bool VerifyVendor(std::string const &Message);
 
-   virtual bool TransactionState(TransactionStates const state);
+   virtual bool TransactionState(TransactionStates const state) APT_OVERRIDE;
 
  public:
    // This refers more to the Transaction-Manager than the actual file
    bool IMSHit;
 
-   virtual bool QueueURI(pkgAcquire::ItemDesc &Item);
-   virtual HashStringList GetExpectedHashes() const;
-   virtual bool HashesRequired() const;
+   virtual bool QueueURI(pkgAcquire::ItemDesc &Item) APT_OVERRIDE;
+   virtual HashStringList GetExpectedHashes() const APT_OVERRIDE;
+   virtual bool HashesRequired() const APT_OVERRIDE;
 
    // transaction code
    void Add(pkgAcqTransactionItem * const I);
@@ -468,7 +488,7 @@ class APT_HIDDEN pkgAcqMetaBase : public pkgAcqTransactionItem              /*{{{*/
    void TransactionStageRemoval(pkgAcqTransactionItem * const I, const std::string &FinalFile);
 
    /** \brief Get the full pathname of the final file for the current URI */
-   virtual std::string GetFinalFilename() const;
+   virtual std::string GetFinalFilename() const APT_OVERRIDE;
 
    pkgAcqMetaBase(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager,
                  std::vector<IndexTarget> const &IndexTargets,
@@ -496,13 +516,13 @@ class APT_HIDDEN pkgAcqMetaIndex : public pkgAcqMetaBase
    void Init(std::string const &URIDesc, std::string const &ShortDesc);
 
    public:
-   virtual std::string DescURI() const;
+   virtual std::string DescURI() const APT_OVERRIDE;
 
    // Specialized action members
-   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf);
+   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
    virtual void Done(std::string const &Message, HashStringList const &Hashes,
-                    pkgAcquire::MethodConfig const * const Cnf);
-   virtual void Finished();
+                    pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+   virtual void Finished() APT_OVERRIDE;
 
    /** \brief Create a new pkgAcqMetaIndex. */
    pkgAcqMetaIndex(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager,
@@ -533,15 +553,16 @@ class APT_HIDDEN pkgAcqMetaSig : public pkgAcqTransactionItem
    protected:
 
    /** \brief Get the full pathname of the final file for the current URI */
-   virtual std::string GetFinalFilename() const;
+   virtual std::string GetFinalFilename() const APT_OVERRIDE;
 
    public:
-   virtual bool HashesRequired() const { return false; }
+   virtual bool HashesRequired() const APT_OVERRIDE { return false; }
 
    // Specialized action members
-   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf);
+   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
    virtual void Done(std::string const &Message, HashStringList const &Hashes,
-                    pkgAcquire::MethodConfig const * const Cnf);
+                    pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+   virtual std::string Custom600Headers() const APT_OVERRIDE;
 
    /** \brief Create a new pkgAcqMetaSig. */
    pkgAcqMetaSig(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager,
@@ -559,13 +580,14 @@ class APT_HIDDEN pkgAcqMetaClearSig : public pkgAcqMetaIndex
 
  public:
    /** \brief A package-system-specific parser for the meta-index file. */
-   indexRecords *MetaIndexParser;
-   indexRecords *LastMetaIndexParser;
+   metaIndex *MetaIndexParser;
+   metaIndex *LastMetaIndexParser;
 
-   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf);
-   virtual std::string Custom600Headers() const;
+   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+   virtual std::string Custom600Headers() const APT_OVERRIDE;
+   virtual bool VerifyDone(std::string const &Message, pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
    virtual void Done(std::string const &Message, HashStringList const &Hashes,
-                    pkgAcquire::MethodConfig const * const Cnf);
+                    pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
 
    /** \brief Create a new pkgAcqMetaClearSig. */
    pkgAcqMetaClearSig(pkgAcquire * const Owner,
@@ -573,7 +595,7 @@ class APT_HIDDEN pkgAcqMetaClearSig : public pkgAcqMetaIndex
                IndexTarget const &DetachedDataTarget,
                IndexTarget const &DetachedSigTarget,
                std::vector<IndexTarget> const &IndexTargets,
-               indexRecords * const MetaIndexParser);
+               metaIndex * const MetaIndexParser);
    virtual ~pkgAcqMetaClearSig();
 };
                                                                        /*}}}*/
@@ -584,7 +606,7 @@ class APT_HIDDEN pkgAcqBaseIndex : public pkgAcqTransactionItem
 
  public:
    /** \brief Get the full pathname of the final file for the current URI */
-   virtual std::string GetFinalFilename() const;
+   virtual std::string GetFinalFilename() const APT_OVERRIDE;
 
    pkgAcqBaseIndex(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager,
                    IndexTarget const &Target);
@@ -615,19 +637,19 @@ class APT_HIDDEN pkgAcqDiffIndex : public pkgAcqBaseIndex
    std::string Description;
 
    /** \brief Get the full pathname of the final file for the current URI */
-   virtual std::string GetFinalFilename() const;
+   virtual std::string GetFinalFilename() const APT_OVERRIDE;
 
-   virtual bool QueueURI(pkgAcquire::ItemDesc &Item);
+   virtual bool QueueURI(pkgAcquire::ItemDesc &Item) APT_OVERRIDE;
 
-   virtual bool TransactionState(TransactionStates const state);
+   virtual bool TransactionState(TransactionStates const state) APT_OVERRIDE;
  public:
    // Specialized action members
-   virtual void Failed(std::string const &Message, pkgAcquire::MethodConfig const * const Cnf);
+   virtual void Failed(std::string const &Message, pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
    virtual void Done(std::string const &Message, HashStringList const &Hashes,
-                    pkgAcquire::MethodConfig const * const Cnf);
-   virtual std::string DescURI() const {return Target.URI + "Index";};
-   virtual std::string Custom600Headers() const;
-   virtual std::string GetMetaKey() const;
+                    pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+   virtual std::string DescURI() const APT_OVERRIDE {return Target.URI + "Index";};
+   virtual std::string Custom600Headers() const APT_OVERRIDE;
+   virtual std::string GetMetaKey() const APT_OVERRIDE;
 
    /** \brief Parse the Index file for a set of Packages diffs.
     *
@@ -725,13 +747,13 @@ class APT_HIDDEN pkgAcqIndexMergeDiffs : public pkgAcqBaseIndex
     *  This method will fall back to downloading the whole index file
     *  outright; its arguments are ignored.
     */
-   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf);
+   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
    virtual void Done(std::string const &Message, HashStringList const &Hashes,
-        pkgAcquire::MethodConfig const * const Cnf);
-   virtual std::string Custom600Headers() const;
-   virtual std::string DescURI() const {return Target.URI + "Index";};
-   virtual HashStringList GetExpectedHashes() const;
-   virtual bool HashesRequired() const;
+        pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+   virtual std::string Custom600Headers() const APT_OVERRIDE;
+   virtual std::string DescURI() const APT_OVERRIDE {return Target.URI + "Index";};
+   virtual HashStringList GetExpectedHashes() const APT_OVERRIDE;
+   virtual bool HashesRequired() const APT_OVERRIDE;
 
    /** \brief Create an index merge-diff item.
     *
@@ -819,10 +841,7 @@ class APT_HIDDEN pkgAcqIndexDiffs : public pkgAcqBaseIndex
 
    /** The current status of this patch. */
    enum DiffState
-     {
-       /** \brief The diff is in an unknown state. */
-        StateFetchUnkown,
-
+   {
         /** \brief The diff is currently being fetched. */
         StateFetchDiff,
 
@@ -837,14 +856,14 @@ class APT_HIDDEN pkgAcqIndexDiffs : public pkgAcqBaseIndex
     *  This method will fall back to downloading the whole index file
     *  outright; its arguments are ignored.
     */
-   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf);
+   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
 
    virtual void Done(std::string const &Message, HashStringList const &Hashes,
-                    pkgAcquire::MethodConfig const * const Cnf);
-   virtual std::string Custom600Headers() const;
-   virtual std::string DescURI() const {return Target.URI + "IndexDiffs";};
-   virtual HashStringList GetExpectedHashes() const;
-   virtual bool HashesRequired() const;
+                    pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+   virtual std::string Custom600Headers() const APT_OVERRIDE;
+   virtual std::string DescURI() const APT_OVERRIDE {return Target.URI + "IndexDiffs";};
+   virtual HashStringList GetExpectedHashes() const APT_OVERRIDE;
+   virtual bool HashesRequired() const APT_OVERRIDE;
 
    /** \brief Create an index diff item.
     *
@@ -895,16 +914,12 @@ class APT_HIDDEN pkgAcqIndex : public pkgAcqBaseIndex
    AllStages Stage;
 
    /** \brief Handle what needs to be done when the download is done */
-   void StageDownloadDone(std::string const &Message,
-                          HashStringList const &Hashes,
-                          pkgAcquire::MethodConfig const * const Cfg);
+   void StageDownloadDone(std::string const &Message);
 
    /** \brief Handle what needs to be done when the decompression/copy is
     *         done 
     */
-   void StageDecompressDone(std::string const &Message,
-                            HashStringList const &Hashes,
-                            pkgAcquire::MethodConfig const * const Cfg);
+   void StageDecompressDone();
 
    /** \brief If \b set, this partially downloaded file will be
     *  removed when the download completes.
@@ -922,25 +937,19 @@ class APT_HIDDEN pkgAcqIndex : public pkgAcqBaseIndex
    /** \brief Do the changes needed to fetch via AptByHash (if needed) */
    void InitByHashIfNeeded();
 
-   /** \brief Auto select the right compression to use */
-   void AutoSelectCompression();
-
-   /** \brief Schedule file for verification after a IMS hit */
-   void ReverifyAfterIMS();
-
    /** \brief Get the full pathname of the final file for the current URI */
-   virtual std::string GetFinalFilename() const;
+   virtual std::string GetFinalFilename() const APT_OVERRIDE;
 
-   virtual bool TransactionState(TransactionStates const state);
+   virtual bool TransactionState(TransactionStates const state) APT_OVERRIDE;
 
    public:
    // Specialized action members
-   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf);
+   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
    virtual void Done(std::string const &Message, HashStringList const &Hashes,
-                    pkgAcquire::MethodConfig const * const Cnf);
-   virtual std::string Custom600Headers() const;
-   virtual std::string DescURI() const {return Desc.URI;};
-   virtual std::string GetMetaKey() const;
+                    pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+   virtual std::string Custom600Headers() const APT_OVERRIDE;
+   virtual std::string DescURI() const APT_OVERRIDE {return Desc.URI;};
+   virtual std::string GetMetaKey() const APT_OVERRIDE;
 
    pkgAcqIndex(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager,
                IndexTarget const &Target);
@@ -1001,19 +1010,19 @@ class pkgAcqArchive : public pkgAcquire::Item
    bool QueueNext();
 
    /** \brief Get the full pathname of the final file for the current URI */
-   virtual std::string GetFinalFilename() const;
+   virtual std::string GetFinalFilename() const APT_OVERRIDE;
 
    public:
 
-   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf);
+   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
    virtual void Done(std::string const &Message, HashStringList const &Hashes,
-                    pkgAcquire::MethodConfig const * const Cnf);
-   virtual std::string DescURI() const;
-   virtual std::string ShortDesc() const;
-   virtual void Finished();
-   virtual bool IsTrusted() const;
-   virtual HashStringList GetExpectedHashes() const;
-   virtual bool HashesRequired() const;
+                    pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+   virtual std::string DescURI() const APT_OVERRIDE;
+   virtual std::string ShortDesc() const APT_OVERRIDE;
+   virtual void Finished() APT_OVERRIDE;
+   virtual bool IsTrusted() const APT_OVERRIDE;
+   virtual HashStringList GetExpectedHashes() const APT_OVERRIDE;
+   virtual bool HashesRequired() const APT_OVERRIDE;
 
    /** \brief Create a new pkgAcqArchive.
     *
@@ -1054,14 +1063,14 @@ class pkgAcqChangelog : public pkgAcquire::Item
    public:
    // we will never have hashes for changelogs.
    // If you need verified ones, download the deb and extract the changelog.
-   virtual HashStringList GetExpectedHashes() const { return HashStringList(); }
-   virtual bool HashesRequired() const { return false; }
+   virtual HashStringList GetExpectedHashes() const APT_OVERRIDE { return HashStringList(); }
+   virtual bool HashesRequired() const APT_OVERRIDE { return false; }
 
    // Specialized action members
-   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf);
+   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
    virtual void Done(std::string const &Message, HashStringList const &CalcHashes,
-                    pkgAcquire::MethodConfig const * const Cnf);
-   virtual std::string DescURI() const {return Desc.URI;};
+                    pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+   virtual std::string DescURI() const APT_OVERRIDE {return Desc.URI;};
 
    /** returns the URI to the changelog of this version
     *
@@ -1084,7 +1093,7 @@ class pkgAcqChangelog : public pkgAcquire::Item
 
    /** returns the URI to the changelog of this version
     *
-    *  \param Template URI where CHANGEPATH has to be filled in
+    *  \param Template URI where @CHANGEPATH@ has to be filled in
     *  \param Component in which the package resides, can be empty
     *  \param SrcName is the source package name
     *  \param SrcVersion is the source package version
@@ -1173,15 +1182,15 @@ class pkgAcqFile : public pkgAcquire::Item
 
    HashStringList const ExpectedHashes;
    public:
-   virtual HashStringList GetExpectedHashes() const;
-   virtual bool HashesRequired() const;
+   virtual HashStringList GetExpectedHashes() const APT_OVERRIDE;
+   virtual bool HashesRequired() const APT_OVERRIDE;
 
    // Specialized action members
-   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf);
+   virtual void Failed(std::string const &Message,pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
    virtual void Done(std::string const &Message, HashStringList const &CalcHashes,
-                    pkgAcquire::MethodConfig const * const Cnf);
-   virtual std::string DescURI() const {return Desc.URI;};
-   virtual std::string Custom600Headers() const;
+                    pkgAcquire::MethodConfig const * const Cnf) APT_OVERRIDE;
+   virtual std::string DescURI() const APT_OVERRIDE {return Desc.URI;};
+   virtual std::string Custom600Headers() const APT_OVERRIDE;
 
    /** \brief Create a new pkgAcqFile object.
     *