diff options
author | kurtis.heimerl <kurtis.heimerl@19bc5d8c-e614-43d4-8b26-e1612bc8e597> | 2012-12-16 06:23:29 +0000 |
---|---|---|
committer | kurtis.heimerl <kurtis.heimerl@19bc5d8c-e614-43d4-8b26-e1612bc8e597> | 2012-12-16 06:23:29 +0000 |
commit | 8fd86a50e53d8a55a2f1f76db143dab73ede045e (patch) | |
tree | 1f1b6f237683b3687a41525b61df67e0e557fe31 /CommonLibs/Reporting.h | |
parent | 00913d74d9d3d9e270a5624513adc3939b257ff1 (diff) |
OH GOOD GIT MISSED THESE FILES THANKS GIT
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@4630 19bc5d8c-e614-43d4-8b26-e1612bc8e597
Diffstat (limited to 'CommonLibs/Reporting.h')
-rw-r--r-- | CommonLibs/Reporting.h | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/CommonLibs/Reporting.h b/CommonLibs/Reporting.h new file mode 100644 index 0000000..1878618 --- /dev/null +++ b/CommonLibs/Reporting.h @@ -0,0 +1,86 @@ +/**@file Module for performance-reporting mechanisms. */ +/* +* Copyright 2012 Range Networks, Inc. +* +* This software is distributed under the terms of the GNU Affero Public License. +* See the COPYING file in the main directory for details. +* +* This use of this software may be subject to additional restrictions. +* See the LEGAL file in the main directory for details. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ + +#ifndef REPORTING_H +#define REPORTING_H + +#include <sqlite3util.h> +#include <ostream> + + +/** + Collect performance statistics into a database. + Parameters are counters or max/min trackers, all integer. +*/ +class ReportingTable { + + private: + + sqlite3* mDB; ///< database connection + int mFacility; ///< rsyslogd facility + + + + public: + + /** + Open the database connection; + create the table if it does not exist yet. + */ + ReportingTable(const char* filename); + + /** Create a new parameter. */ + bool create(const char* paramName); + + /** Create an indexed parameter set. */ + bool create(const char* baseBame, unsigned minIndex, unsigned maxIndex); + + /** Increment a counter. */ + bool incr(const char* paramName); + + /** Increment an indexed counter. */ + bool incr(const char* baseName, unsigned index); + + /** Take a max of a parameter. */ + bool max(const char* paramName, unsigned newVal); + + /** Take a max of an indexed parameter. */ + bool max(const char* paramName, unsigned index, unsigned newVal); + + /** Clear a value. */ + bool clear(const char* paramName); + + /** Clear an indexed value. */ + bool clear(const char* paramName, unsigned index); + + /** Dump the database to a stream. */ + void dump(std::ostream&) const; + +}; + +#endif + + +// vim: ts=4 sw=4 |