apt  0.9.15
install-progress.h
1 #ifndef PKGLIB_IPROGRESS_H
2 #define PKGLIB_IPROGRESS_H
3 
4 #include <string>
5 #include <unistd.h>
6 #include <signal.h>
7 #include <vector>
8 
9 namespace APT {
10 namespace Progress {
11 
12  class PackageManager;
13  PackageManager* PackageManagerProgressFactory();
14 
16  {
17  private:
19  void *d;
20 
21  protected:
22  std::string progress_str;
23  float percentage;
24  int last_reported_progress;
25 
26  public:
28  : percentage(0.0), last_reported_progress(-1) {};
29  virtual ~PackageManager() {};
30 
31  /* Global Start/Stop */
32  virtual void Start(int child_pty=-1) {};
33  virtual void Stop() {};
34 
35  /* When dpkg is invoked (may happen multiple times for each
36  * install/remove block
37  */
38  virtual void StartDpkg() {};
39 
40  virtual pid_t fork() {return fork(); };
41 
42  virtual void Pulse() {};
43  virtual long GetPulseInterval() {
44  return 500000;
45  };
46 
47  virtual bool StatusChanged(std::string PackageName,
48  unsigned int StepsDone,
49  unsigned int TotalSteps,
50  std::string HumanReadableAction) ;
51  virtual void Error(std::string PackageName,
52  unsigned int StepsDone,
53  unsigned int TotalSteps,
54  std::string ErrorMessage) {};
55  virtual void ConffilePrompt(std::string PackageName,
56  unsigned int StepsDone,
57  unsigned int TotalSteps,
58  std::string ConfMessage) {};
59  };
60 
62  {
63  protected:
64  int OutStatusFd;
65  int StepsDone;
66  int StepsTotal;
67  void WriteToStatusFd(std::string msg);
68 
69  public:
70  PackageManagerProgressFd(int progress_fd);
71 
72  virtual void StartDpkg();
73  virtual void Stop();
74 
75  virtual bool StatusChanged(std::string PackageName,
76  unsigned int StepsDone,
77  unsigned int TotalSteps,
78  std::string HumanReadableAction);
79  virtual void Error(std::string PackageName,
80  unsigned int StepsDone,
81  unsigned int TotalSteps,
82  std::string ErrorMessage);
83  virtual void ConffilePrompt(std::string PackageName,
84  unsigned int StepsDone,
85  unsigned int TotalSteps,
86  std::string ConfMessage);
87 
88  };
89 
91  {
92  protected:
93  int OutStatusFd;
94  int StepsDone;
95  int StepsTotal;
96  void WriteToStatusFd(std::string msg);
97 
98  public:
99  PackageManagerProgressDeb822Fd(int progress_fd);
100 
101  virtual void StartDpkg();
102  virtual void Stop();
103 
104  virtual bool StatusChanged(std::string PackageName,
105  unsigned int StepsDone,
106  unsigned int TotalSteps,
107  std::string HumanReadableAction);
108  virtual void Error(std::string PackageName,
109  unsigned int StepsDone,
110  unsigned int TotalSteps,
111  std::string ErrorMessage);
112  virtual void ConffilePrompt(std::string PackageName,
113  unsigned int StepsDone,
114  unsigned int TotalSteps,
115  std::string ConfMessage);
116  };
117 
119  {
120  private:
121  static void staticSIGWINCH(int);
122  static std::vector<PackageManagerFancy*> instances;
123 
124  protected:
125  void SetupTerminalScrollArea(int nr_rows);
126  void HandleSIGWINCH(int);
127 
128  int GetNumberTerminalRows();
129  sighandler_t old_SIGWINCH;
130  int child_pty;
131 
132  public:
135  virtual void Start(int child_pty=-1);
136  virtual void Stop();
137  virtual bool StatusChanged(std::string PackageName,
138  unsigned int StepsDone,
139  unsigned int TotalSteps,
140  std::string HumanReadableAction);
141  };
142 
144  {
145  public:
146  virtual bool StatusChanged(std::string PackageName,
147  unsigned int StepsDone,
148  unsigned int TotalSteps,
149  std::string HumanReadableAction);
150  };
151 
152 
153 }; // namespace Progress
154 }; // namespace APT
155 
156 #endif
Definition: install-progress.h:15
Definition: install-progress.h:143
Definition: install-progress.h:61
Definition: install-progress.h:118
Definition: install-progress.h:90