00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef OUTPUT_PROCESSOR_H
00024 #define OUTPUT_PROCESSOR_H
00025
00026
00027 #include "storage/StorageInterface.h"
00028
00029
00030 namespace storage
00031 {
00032
00033 class OutputProcessor
00034 {
00035 public:
00036 OutputProcessor() {}
00037 virtual ~OutputProcessor() {}
00038 virtual void reset() = 0;
00039 virtual void finish() = 0;
00040 virtual void process(const string& txt, bool stderr) = 0;
00041 };
00042
00043
00044 class ProgressBar : public OutputProcessor
00045 {
00046 public:
00047 ProgressBar(const string& id, CallbackProgressBar callback)
00048 : id(id), callback(callback), first(true), max(100), cur(0)
00049 {}
00050
00051 virtual ~ProgressBar() {}
00052
00053 virtual void reset() { first = true; cur = 0; }
00054 virtual void finish() { setCurValue(max); }
00055 virtual void process(const string& txt, bool stderr) {}
00056
00057 void setMaxValue(unsigned val) { max = val; }
00058 unsigned getMaxValue() const { return max; }
00059 void setCurValue(unsigned val);
00060 unsigned getCurValue() const { return cur; }
00061
00062 protected:
00063 const string id;
00064 const CallbackProgressBar callback;
00065
00066 bool first;
00067
00068 private:
00069 unsigned long max;
00070 unsigned long cur;
00071 };
00072
00073
00074 class Mke2fsProgressBar : public ProgressBar
00075 {
00076 public:
00077 Mke2fsProgressBar(CallbackProgressBar callback)
00078 : ProgressBar("format", callback)
00079 {
00080 setMaxValue(100);
00081 done = false;
00082 }
00083
00084 virtual void process(const string& txt, bool stderr);
00085
00086 protected:
00087 string seen;
00088 bool done;
00089 };
00090
00091
00092 class ReiserProgressBar : public ProgressBar
00093 {
00094 public:
00095 ReiserProgressBar(CallbackProgressBar callback)
00096 : ProgressBar("format", callback)
00097 {
00098 setMaxValue(100);
00099 }
00100
00101 virtual void process(const string& txt, bool stderr);
00102
00103 protected:
00104 string seen;
00105 };
00106
00107
00108 class DasdfmtProgressBar : public ProgressBar
00109 {
00110 public:
00111 DasdfmtProgressBar(CallbackProgressBar callback)
00112 : ProgressBar("dasdfmt", callback)
00113 {
00114 setMaxValue(100);
00115 max_cyl = cur_cyl = 0;
00116 }
00117
00118 virtual void process(const string& txt, bool stderr);
00119
00120 protected:
00121 string seen;
00122 unsigned long max_cyl;
00123 unsigned long cur_cyl;
00124 };
00125
00126 }
00127
00128
00129 #endif