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