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