~ubuntu-branches/ubuntu/oneiric/qwt/oneiric-proposed

« back to all changes in this revision

Viewing changes to qwt-5.0.2/examples/cpuplot/cpustat.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Fathi Boudra
  • Date: 2007-10-05 15:20:41 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20071005152041-qmybqh4fj9jejyo2
Tags: 5.0.2-2
* Handle nostrip build option. (Closes: #437877)
* Build libqwt5-doc package in binary-indep target. (Closes: #443110)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include <qstringlist.h>
 
2
#include <qfile.h>
 
3
#include <qtextstream.h>
 
4
#include "cpustat.h"
 
5
 
 
6
CpuStat::CpuStat()
 
7
{
 
8
    lookUp(procValues);
 
9
}
 
10
 
 
11
QTime CpuStat::upTime() const
 
12
{
 
13
    QTime t;
 
14
    for ( int i = 0; i < NValues; i++ )
 
15
        t = t.addSecs(int(procValues[i] / 100));
 
16
 
 
17
    return t;
 
18
}
 
19
 
 
20
void CpuStat::statistic(double &user, double &system)
 
21
{
 
22
    double values[NValues];
 
23
 
 
24
    lookUp(values);
 
25
 
 
26
    double userDelta = values[User] + values[Nice]
 
27
        - procValues[User] - procValues[Nice];
 
28
    double systemDelta = values[System] - procValues[System];
 
29
 
 
30
    double totalDelta = 0;
 
31
    for ( int i = 0; i < NValues; i++ )
 
32
        totalDelta += values[i] - procValues[i];
 
33
 
 
34
    user = userDelta / totalDelta * 100.0;
 
35
    system = systemDelta / totalDelta * 100.0;
 
36
 
 
37
    for ( int j = 0; j < NValues; j++ )
 
38
        procValues[j] = values[j];
 
39
}
 
40
 
 
41
void CpuStat::lookUp(double values[NValues]) const
 
42
{
 
43
    QFile file("/proc/stat");
 
44
#if QT_VERSION >= 0x040000
 
45
    if ( !file.open(QIODevice::ReadOnly) )
 
46
#else
 
47
    if ( !file.open(IO_ReadOnly) )
 
48
#endif
 
49
    {
 
50
        static double dummyValues[][NValues] =
 
51
        {
 
52
            { 103726, 0, 23484, 819556 },
 
53
            { 103783, 0, 23489, 819604 },
 
54
            { 103798, 0, 23490, 819688 },
 
55
            { 103820, 0, 23490, 819766 },
 
56
            { 103840, 0, 23493, 819843 },
 
57
            { 103875, 0, 23499, 819902 },
 
58
            { 103917, 0, 23504, 819955 },
 
59
            { 103950, 0, 23508, 820018 },
 
60
            { 103987, 0, 23510, 820079 },
 
61
            { 104020, 0, 23513, 820143 },
 
62
            { 104058, 0, 23514, 820204 },
 
63
            { 104099, 0, 23520, 820257 },
 
64
            { 104121, 0, 23525, 820330 },
 
65
            { 104159, 0, 23530, 820387 },
 
66
            { 104176, 0, 23534, 820466 },
 
67
            { 104215, 0, 23538, 820523 },
 
68
            { 104245, 0, 23541, 820590 },
 
69
            { 104267, 0, 23545, 820664 },
 
70
            { 104311, 0, 23555, 820710 },
 
71
            { 104355, 0, 23565, 820756 },
 
72
            { 104367, 0, 23567, 820842 },
 
73
            { 104383, 0, 23572, 820921 },
 
74
            { 104396, 0, 23577, 821003 },
 
75
            { 104413, 0, 23579, 821084 },
 
76
            { 104446, 0, 23588, 821142 },
 
77
            { 104521, 0, 23594, 821161 },
 
78
            { 104611, 0, 23604, 821161 },
 
79
            { 104708, 0, 23607, 821161 },
 
80
            { 104804, 0, 23611, 821161 },
 
81
            { 104895, 0, 23620, 821161 },
 
82
            { 104993, 0, 23622, 821161 },
 
83
            { 105089, 0, 23626, 821161 },
 
84
            { 105185, 0, 23630, 821161 },
 
85
            { 105281, 0, 23634, 821161 },
 
86
            { 105379, 0, 23636, 821161 },
 
87
            { 105472, 0, 23643, 821161 },
 
88
            { 105569, 0, 23646, 821161 },
 
89
            { 105666, 0, 23649, 821161 },
 
90
            { 105763, 0, 23652, 821161 },
 
91
            { 105828, 0, 23661, 821187 },
 
92
            { 105904, 0, 23666, 821206 },
 
93
            { 105999, 0, 23671, 821206 },
 
94
            { 106094, 0, 23676, 821206 },
 
95
            { 106184, 0, 23686, 821206 },
 
96
            { 106273, 0, 23692, 821211 },
 
97
            { 106306, 0, 23700, 821270 },
 
98
            { 106341, 0, 23703, 821332 },
 
99
            { 106392, 0, 23709, 821375 },
 
100
            { 106423, 0, 23715, 821438 },
 
101
            { 106472, 0, 23721, 821483 },
 
102
            { 106531, 0, 23727, 821517 },
 
103
            { 106562, 0, 23732, 821582 },
 
104
            { 106597, 0, 23736, 821643 },
 
105
            { 106633, 0, 23737, 821706 },
 
106
            { 106666, 0, 23742, 821768 },
 
107
            { 106697, 0, 23744, 821835 },
 
108
            { 106730, 0, 23748, 821898 },
 
109
            { 106765, 0, 23751, 821960 },
 
110
            { 106799, 0, 23754, 822023 },
 
111
            { 106831, 0, 23758, 822087 },
 
112
            { 106862, 0, 23761, 822153 },
 
113
            { 106899, 0, 23763, 822214 },
 
114
            { 106932, 0, 23766, 822278 },
 
115
            { 106965, 0, 23768, 822343 },
 
116
            { 107009, 0, 23771, 822396 },
 
117
            { 107040, 0, 23775, 822461 },
 
118
            { 107092, 0, 23780, 822504 },
 
119
            { 107143, 0, 23787, 822546 },
 
120
            { 107200, 0, 23795, 822581 },
 
121
            { 107250, 0, 23803, 822623 },
 
122
            { 107277, 0, 23810, 822689 },
 
123
            { 107286, 0, 23810, 822780 },
 
124
            { 107313, 0, 23817, 822846 },
 
125
            { 107325, 0, 23818, 822933 },
 
126
            { 107332, 0, 23818, 823026 },
 
127
            { 107344, 0, 23821, 823111 },
 
128
            { 107357, 0, 23821, 823198 },
 
129
            { 107368, 0, 23823, 823284 },
 
130
            { 107375, 0, 23824, 823377 },
 
131
            { 107386, 0, 23825, 823465 },
 
132
            { 107396, 0, 23826, 823554 },
 
133
            { 107422, 0, 23830, 823624 },
 
134
            { 107434, 0, 23831, 823711 },
 
135
            { 107456, 0, 23835, 823785 },
 
136
            { 107468, 0, 23838, 823870 },
 
137
            { 107487, 0, 23840, 823949 },
 
138
            { 107515, 0, 23843, 824018 },
 
139
            { 107528, 0, 23846, 824102 },
 
140
            { 107535, 0, 23851, 824190 },
 
141
            { 107548, 0, 23853, 824275 },
 
142
            { 107562, 0, 23857, 824357 },
 
143
            { 107656, 0, 23863, 824357 },
 
144
            { 107751, 0, 23868, 824357 },
 
145
            { 107849, 0, 23870, 824357 },
 
146
            { 107944, 0, 23875, 824357 },
 
147
            { 108043, 0, 23876, 824357 },
 
148
            { 108137, 0, 23882, 824357 },
 
149
            { 108230, 0, 23889, 824357 },
 
150
            { 108317, 0, 23902, 824357 },
 
151
            { 108412, 0, 23907, 824357 },
 
152
            { 108511, 0, 23908, 824357 },
 
153
            { 108608, 0, 23911, 824357 },
 
154
            { 108704, 0, 23915, 824357 },
 
155
            { 108801, 0, 23918, 824357 },
 
156
            { 108891, 0, 23928, 824357 },
 
157
            { 108987, 0, 23932, 824357 },
 
158
            { 109072, 0, 23943, 824361 },
 
159
            { 109079, 0, 23943, 824454 },
 
160
            { 109086, 0, 23944, 824546 },
 
161
            { 109098, 0, 23950, 824628 },
 
162
            { 109108, 0, 23955, 824713 },
 
163
            { 109115, 0, 23957, 824804 },
 
164
            { 109122, 0, 23958, 824896 },
 
165
            { 109132, 0, 23959, 824985 },
 
166
            { 109142, 0, 23961, 825073 },
 
167
            { 109146, 0, 23962, 825168 },
 
168
            { 109153, 0, 23964, 825259 },
 
169
            { 109162, 0, 23966, 825348 },
 
170
            { 109168, 0, 23969, 825439 },
 
171
            { 109176, 0, 23971, 825529 },
 
172
            { 109185, 0, 23974, 825617 },
 
173
            { 109193, 0, 23977, 825706 },
 
174
            { 109198, 0, 23978, 825800 },
 
175
            { 109206, 0, 23978, 825892 },
 
176
            { 109212, 0, 23981, 825983 },
 
177
            { 109219, 0, 23981, 826076 },
 
178
            { 109225, 0, 23981, 826170 },
 
179
            { 109232, 0, 23984, 826260 },
 
180
            { 109242, 0, 23984, 826350 },
 
181
            { 109255, 0, 23986, 826435 },
 
182
            { 109268, 0, 23987, 826521 },
 
183
            { 109283, 0, 23990, 826603 },
 
184
            { 109288, 0, 23991, 826697 },
 
185
            { 109295, 0, 23993, 826788 },
 
186
            { 109308, 0, 23994, 826874 },
 
187
            { 109322, 0, 24009, 826945 },
 
188
            { 109328, 0, 24011, 827037 },
 
189
            { 109338, 0, 24012, 827126 },
 
190
            { 109347, 0, 24012, 827217 },
 
191
            { 109354, 0, 24017, 827305 },
 
192
            { 109367, 0, 24017, 827392 },
 
193
            { 109371, 0, 24019, 827486 },
 
194
        };
 
195
        static int counter = 0;
 
196
        
 
197
        for ( int i = 0; i < NValues; i++ )
 
198
            values[i] = dummyValues[counter][i];
 
199
 
 
200
        counter = (counter + 1) 
 
201
            % (sizeof(dummyValues) / sizeof(dummyValues[0]));
 
202
    }
 
203
    else
 
204
    {
 
205
        QTextStream textStream(&file);
 
206
        do {
 
207
            QString line = textStream.readLine();
 
208
#if QT_VERSION < 0x040000
 
209
            line = line.stripWhiteSpace();
 
210
#else
 
211
            line = line.trimmed();
 
212
#endif
 
213
            if ( line.startsWith("cpu ") )
 
214
            {
 
215
                const QStringList valueList =
 
216
#if QT_VERSION < 0x040000
 
217
                    QStringList::split(" ", line);
 
218
#else
 
219
                    line.split(" ",  QString::SkipEmptyParts);
 
220
#endif
 
221
                if ( valueList.count() >= 5 )
 
222
                {
 
223
                    for ( int i = 0; i < NValues; i++ )
 
224
                        values[i] = valueList[i+1].toDouble();
 
225
                }
 
226
                break;
 
227
            }
 
228
        } 
 
229
#if QT_VERSION < 0x040000
 
230
        while(!textStream.eof());
 
231
#else
 
232
        while(!textStream.atEnd());
 
233
#endif
 
234
    }
 
235
}