summaryrefslogtreecommitdiff
path: root/apt-private/private-progress.h
diff options
context:
space:
mode:
authorMichael Vogt <mvo@debian.org>2013-10-21 21:23:07 +0200
committerMichael Vogt <mvo@debian.org>2013-10-21 21:23:34 +0200
commit1c6cedc489b5eaeed1b7fdb845eca06bc1fccd4f (patch)
tree9022a2cb7fb65f738be8eaf1574f06a56faa9d01 /apt-private/private-progress.h
parent65dbd5a1a32f63dae81c8b5814cd246f1154c38d (diff)
move iprogress.{cc,h} to private-progress.{cc,h} until its fully stable
Diffstat (limited to 'apt-private/private-progress.h')
-rw-r--r--apt-private/private-progress.h109
1 files changed, 109 insertions, 0 deletions
diff --git a/apt-private/private-progress.h b/apt-private/private-progress.h
new file mode 100644
index 000000000..42fa89be4
--- /dev/null
+++ b/apt-private/private-progress.h
@@ -0,0 +1,109 @@
+#ifndef PKGLIB_IPROGRESS_H
+#define PKGLIB_IPROGRESS_H
+
+#include <string>
+#include <unistd.h>
+
+
+namespace APT {
+namespace Progress {
+
+ class PackageManager
+ {
+ private:
+ /** \brief dpointer placeholder */
+ void *d;
+
+ protected:
+ std::string progress_str;
+ float percentage;
+ int last_reported_progress;
+
+ public:
+ PackageManager()
+ : percentage(0.0), last_reported_progress(-1) {};
+ virtual ~PackageManager() {};
+
+ virtual void Start() {};
+ virtual void Stop() {};
+
+ virtual pid_t fork() {return fork(); };
+
+ virtual void Pulse() {};
+ virtual long GetPulseInterval() {
+ return 500000;
+ };
+
+ virtual bool StatusChanged(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string HumanReadableAction) ;
+ virtual void Error(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string ErrorMessage) {};
+ virtual void ConffilePrompt(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string ConfMessage) {};
+ };
+
+ class PackageManagerProgressFd : public PackageManager
+ {
+ protected:
+ int OutStatusFd;
+ int StepsDone;
+ int StepsTotal;
+ void WriteToStatusFd(std::string msg);
+
+ public:
+ PackageManagerProgressFd(int progress_fd);
+
+ virtual void Start();
+ virtual void Stop();
+
+ virtual bool StatusChanged(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string HumanReadableAction);
+ virtual void Error(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string ErrorMessage);
+ virtual void ConffilePrompt(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string ConfMessage);
+
+ };
+
+ class PackageManagerFancy : public PackageManager
+ {
+ protected:
+ int nr_terminal_rows;
+ void SetupTerminalScrollArea(int nr_rows);
+
+ public:
+ PackageManagerFancy();
+ virtual void Start();
+ virtual void Stop();
+ virtual bool StatusChanged(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string HumanReadableAction);
+ };
+
+ class PackageManagerText : public PackageManager
+ {
+ public:
+ virtual bool StatusChanged(std::string PackageName,
+ unsigned int StepsDone,
+ unsigned int TotalSteps,
+ std::string HumanReadableAction);
+ };
+
+
+}; // namespace Progress
+}; // namespace APT
+
+#endif