xref: /haiku/src/apps/activitymonitor/DataSource.h (revision 2c69b5b6c0e7b481a0c43366a1942a6055cbb864)
1 /*
2  * Copyright 2008-2009, Axel Dörfler, axeld@pinc-software.de.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef DATA_SOURCE_H
6 #define DATA_SOURCE_H
7 
8 
9 #include <InterfaceDefs.h>
10 #include <String.h>
11 
12 class SystemInfo;
13 
14 
15 enum scale_type {
16 	kNoScale,
17 	kBytePerSecondScale,
18 };
19 
20 class DataSource {
21 public:
22 						DataSource(int64 initialMin, int64 initialMax);
23 						DataSource();
24 						DataSource(const DataSource& other);
25 	virtual				~DataSource();
26 
27 	virtual DataSource*	Copy() const;
28 	virtual DataSource*	CopyForCPU(int32 cpu) const;
29 
30 			int64		Minimum() const;
31 			int64		Maximum() const;
32 			bigtime_t	RefreshInterval() const;
33 
34 	virtual void		SetLimits(int64 min, int64 max);
35 	virtual void		SetRefreshInterval(bigtime_t interval);
36 	virtual void		SetColor(rgb_color color);
37 
38 	virtual	int64		NextValue(SystemInfo& info);
39 	virtual void		Print(BString& text, int64 value) const;
40 
41 	virtual const char*	Name() const;
42 	virtual const char*	Label() const;
43 	virtual const char*	ShortLabel() const;
44 	virtual const char*	Unit() const;
45 	virtual rgb_color	Color() const;
46 	virtual bool		AdaptiveScale() const;
47 	virtual scale_type	ScaleType() const;
48 	virtual int32		CPU() const;
49 	virtual bool		PerCPU() const;
50 	virtual bool		MultiCPUOnly() const;
51 	virtual bool		Primary() const;
52 
53 	static int32		CountSources();
54 	static const DataSource* SourceAt(int32 index);
55 	static const DataSource* FindSource(const char* name);
56 	static int32		IndexOf(const DataSource* source);
57 
58 protected:
59 	int64				fMinimum;
60 	int64				fMaximum;
61 	bigtime_t			fInterval;
62 	rgb_color			fColor;
63 };
64 
65 
66 class MemoryDataSource : public DataSource {
67 public:
68 						MemoryDataSource();
69 	virtual				~MemoryDataSource();
70 
71 	virtual void		Print(BString& text, int64 value) const;
72 	virtual const char*	Unit() const;
73 };
74 
75 
76 class UsedMemoryDataSource : public MemoryDataSource {
77 public:
78 						UsedMemoryDataSource();
79 	virtual				~UsedMemoryDataSource();
80 
81 	virtual DataSource*	Copy() const;
82 
83 	virtual	int64		NextValue(SystemInfo& info);
84 	virtual const char*	Label() const;
85 	virtual const char*	ShortLabel() const;
86 	virtual bool		Primary() const;
87 };
88 
89 
90 class CachedMemoryDataSource : public MemoryDataSource {
91 public:
92 						CachedMemoryDataSource();
93 	virtual				~CachedMemoryDataSource();
94 
95 	virtual DataSource*	Copy() const;
96 
97 	virtual	int64		NextValue(SystemInfo& info);
98 	virtual const char*	Label() const;
99 	virtual const char*	ShortLabel() const;
100 	virtual bool		Primary() const;
101 };
102 
103 
104 class SwapSpaceDataSource : public MemoryDataSource {
105 public:
106 						SwapSpaceDataSource();
107 	virtual				~SwapSpaceDataSource();
108 
109 	virtual DataSource*	Copy() const;
110 
111 	virtual	int64		NextValue(SystemInfo& info);
112 	virtual const char*	Label() const;
113 	virtual const char*	ShortLabel() const;
114 	virtual bool		Primary() const;
115 };
116 
117 
118 class BlockCacheDataSource : public MemoryDataSource {
119 public:
120 						BlockCacheDataSource();
121 	virtual				~BlockCacheDataSource();
122 
123 	virtual DataSource*	Copy() const;
124 
125 	virtual	int64		NextValue(SystemInfo& info);
126 	virtual const char*	Label() const;
127 	virtual const char*	ShortLabel() const;
128 };
129 
130 
131 class SemaphoresDataSource : public DataSource {
132 public:
133 						SemaphoresDataSource();
134 	virtual				~SemaphoresDataSource();
135 
136 	virtual DataSource*	Copy() const;
137 
138 	virtual	int64		NextValue(SystemInfo& info);
139 	virtual const char*	Label() const;
140 	virtual const char*	ShortLabel() const;
141 	virtual bool		AdaptiveScale() const;
142 };
143 
144 
145 class PortsDataSource : public DataSource {
146 public:
147 						PortsDataSource();
148 	virtual				~PortsDataSource();
149 
150 	virtual DataSource*	Copy() const;
151 
152 	virtual	int64		NextValue(SystemInfo& info);
153 	virtual const char*	Label() const;
154 	virtual bool		AdaptiveScale() const;
155 };
156 
157 
158 class ThreadsDataSource : public DataSource {
159 public:
160 						ThreadsDataSource();
161 	virtual				~ThreadsDataSource();
162 
163 	virtual DataSource*	Copy() const;
164 
165 	virtual	int64		NextValue(SystemInfo& info);
166 	virtual const char*	Label() const;
167 	virtual bool		AdaptiveScale() const;
168 };
169 
170 
171 class TeamsDataSource : public DataSource {
172 public:
173 						TeamsDataSource();
174 	virtual				~TeamsDataSource();
175 
176 	virtual DataSource*	Copy() const;
177 
178 	virtual	int64		NextValue(SystemInfo& info);
179 	virtual const char*	Label() const;
180 	virtual bool		AdaptiveScale() const;
181 };
182 
183 
184 class RunningAppsDataSource : public DataSource {
185 public:
186 						RunningAppsDataSource();
187 	virtual				~RunningAppsDataSource();
188 
189 	virtual DataSource*	Copy() const;
190 
191 	virtual	int64		NextValue(SystemInfo& info);
192 	virtual const char*	Label() const;
193 	virtual const char*	ShortLabel() const;
194 	virtual bool		AdaptiveScale() const;
195 };
196 
197 
198 class CPUUsageDataSource : public DataSource {
199 public:
200 						CPUUsageDataSource(int32 cpu = 0);
201 						CPUUsageDataSource(const CPUUsageDataSource& other);
202 	virtual				~CPUUsageDataSource();
203 
204 	virtual DataSource*	Copy() const;
205 	virtual DataSource*	CopyForCPU(int32 cpu) const;
206 
207 	virtual void		Print(BString& text, int64 value) const;
208 	virtual	int64		NextValue(SystemInfo& info);
209 
210 	virtual const char*	Name() const;
211 	virtual const char*	Label() const;
212 	virtual const char*	ShortLabel() const;
213 
214 	virtual int32		CPU() const;
215 	virtual bool		PerCPU() const;
216 	virtual bool		Primary() const;
217 
218 private:
219 			void		_SetCPU(int32 cpu);
220 
221 	bigtime_t			fPreviousActive;
222 	bigtime_t			fPreviousTime;
223 	int32				fCPU;
224 	BString				fLabel;
225 	BString				fShortLabel;
226 };
227 
228 
229 class CPUCombinedUsageDataSource : public DataSource {
230 public:
231 						CPUCombinedUsageDataSource();
232 						CPUCombinedUsageDataSource(
233 							const CPUCombinedUsageDataSource& other);
234 	virtual				~CPUCombinedUsageDataSource();
235 
236 	virtual DataSource*	Copy() const;
237 
238 	virtual void		Print(BString& text, int64 value) const;
239 	virtual	int64		NextValue(SystemInfo& info);
240 
241 	virtual const char*	Name() const;
242 	virtual const char*	Label() const;
243 	virtual const char*	ShortLabel() const;
244 
245 	virtual bool		MultiCPUOnly() const;
246 	virtual bool		Primary() const;
247 
248 private:
249 	bigtime_t			fPreviousActive;
250 	bigtime_t			fPreviousTime;
251 };
252 
253 
254 class PageFaultsDataSource : public DataSource {
255 public:
256 						PageFaultsDataSource();
257 						PageFaultsDataSource(
258 							const PageFaultsDataSource& other);
259 	virtual				~PageFaultsDataSource();
260 
261 	virtual DataSource*	Copy() const;
262 
263 	virtual void		Print(BString& text, int64 value) const;
264 	virtual	int64		NextValue(SystemInfo& info);
265 
266 	virtual const char*	Name() const;
267 	virtual const char*	Label() const;
268 	virtual const char*	ShortLabel() const;
269 	virtual bool		AdaptiveScale() const;
270 	virtual bool		Primary() const;
271 
272 private:
273 	uint32				fPreviousFaults;
274 	bigtime_t			fPreviousTime;
275 };
276 
277 
278 class NetworkUsageDataSource : public DataSource {
279 public:
280 						NetworkUsageDataSource(bool in);
281 						NetworkUsageDataSource(
282 							const NetworkUsageDataSource& other);
283 	virtual				~NetworkUsageDataSource();
284 
285 	virtual DataSource*	Copy() const;
286 
287 	virtual void		Print(BString& text, int64 value) const;
288 	virtual	int64		NextValue(SystemInfo& info);
289 
290 	virtual const char*	Name() const;
291 	virtual const char*	Label() const;
292 	virtual const char*	ShortLabel() const;
293 	virtual bool		AdaptiveScale() const;
294 	virtual scale_type	ScaleType() const;
295 	virtual bool		Primary() const;
296 
297 private:
298 	bool				fIn;
299 	uint64				fPreviousBytes;
300 	bigtime_t			fPreviousTime;
301 };
302 
303 
304 class ClipboardSizeDataSource : public DataSource {
305 public:
306 						ClipboardSizeDataSource(bool text);
307 						ClipboardSizeDataSource(
308 							const ClipboardSizeDataSource& other);
309 	virtual				~ClipboardSizeDataSource();
310 
311 	virtual DataSource*	Copy() const;
312 
313 	virtual	int64		NextValue(SystemInfo& info);
314 
315 	virtual const char*	Label() const;
316 	virtual const char*	Unit() const;
317 	virtual bool		AdaptiveScale() const;
318 
319 private:
320 	bool				fText;
321 };
322 
323 
324 class MediaNodesDataSource : public DataSource {
325 public:
326 						MediaNodesDataSource();
327 	virtual				~MediaNodesDataSource();
328 
329 	virtual DataSource*	Copy() const;
330 
331 	virtual	int64		NextValue(SystemInfo& info);
332 	virtual const char*	Label() const;
333 	virtual bool		AdaptiveScale() const;
334 };
335 
336 #endif	// DATA_SOURCE_H
337