1 /* 2 * Copyright 2016 Bjango Pty Ltd. All rights reserved. 3 * Copyright 2010 William Tisäter. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 15 * 3. The name of the copyright holder may not be used to endorse or promote 16 * products derived from this software without specific prior written 17 * permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY 20 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22 * DISCLAIMED. IN NO EVENT SHALL WILLIAM TISÄTER BE LIABLE FOR ANY 23 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 26 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 * 30 */ 31 32 #ifndef _STATS_H 33 #define _STATS_H 34 35 #include "config.h" 36 #include <math.h> 37 #include <stdio.h> 38 39 #include <vector> 40 #include <limits.h> 41 42 #include "System.h" 43 #include "stats/StatsCPU.h" 44 #include "stats/StatsSensors.h" 45 #include "stats/StatsMemory.h" 46 #include "stats/StatsLoad.h" 47 #include "stats/StatsNetwork.h" 48 #include "stats/StatsDisks.h" 49 #include "stats/StatsUptime.h" 50 #include "stats/StatsActivity.h" 51 #include "stats/StatsBattery.h" 52 #include "stats/StatsProcesses.h" 53 54 #ifdef HAVE_KSTAT_H 55 # include <kstat.h> 56 #endif 57 58 #ifdef USE_SQLITE 59 #include "Database.h" 60 #endif 61 62 class Stats 63 { 64 public: 65 void prepare(); 66 void start(); 67 void startStats(); 68 void update_system_stats(); 69 void updateNextTimes(double t); 70 void close(); 71 void finalize(); 72 73 std::vector<battery_info> get_battery_history(long _pos); 74 long uptime(); 75 long long sampleID; 76 pthread_mutex_t lock; 77 78 bool historyEnabled; 79 bool debugLogging; 80 81 #ifdef USE_SQLITE 82 Database _database; 83 void insertDatabaseItems(StatsBase *collector); 84 #endif 85 86 StatsCPU cpuStats; 87 StatsSensors sensorStats; 88 StatsMemory memoryStats; 89 StatsLoad loadStats; 90 StatsNetwork networkStats; 91 StatsDisks diskStats; 92 StatsUptime uptimeStats; 93 StatsActivity activityStats; 94 StatsBattery batteryStats; 95 StatsProcesses processStats; 96 97 private: 98 #ifdef HAVE_LIBKSTAT 99 kstat_ctl_t *ksh; 100 #endif 101 pthread_t _thread; 102 double updateTime; 103 double nextIPAddressTime; 104 }; 105 106 #endif 107