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

« back to all changes in this revision

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

  • Committer: Bazaar Package Importer
  • Author(s): Fathi Boudra
  • Date: 2009-04-12 23:25:58 UTC
  • mfrom: (1.1.4 upstream) (2.1.2 squeeze)
  • Revision ID: james.westby@ubuntu.com-20090412232558-3bl06x785yr8xm8u
Tags: 5.1.2-1
* New upstream release.
* Bump compat/debhelper to 7.
* Bump Standards-Version to 3.8.1. No changes needed.
* Invert Maintainers and Uploaders field.
* Fix lintian warnings:
  - dh_clean _k deprecated.
  - missing dependency on libc.

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
 
}