acquire-method.h 2.5 KB

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