diff options
Diffstat (limited to '0.8/src/monitor')
| -rw-r--r-- | 0.8/src/monitor/dump.cpp | 145 | ||||
| -rw-r--r-- | 0.8/src/monitor/dump.h | 87 | ||||
| -rw-r--r-- | 0.8/src/monitor/stats.cpp | 139 | ||||
| -rw-r--r-- | 0.8/src/monitor/stats.h | 66 |
4 files changed, 437 insertions, 0 deletions
diff --git a/0.8/src/monitor/dump.cpp b/0.8/src/monitor/dump.cpp new file mode 100644 index 0000000..e249767 --- /dev/null +++ b/0.8/src/monitor/dump.cpp @@ -0,0 +1,145 @@ +/*:* + *: File: ./src/monitor/dump.cpp + *: + *: yChat; Homepage: ychat.buetow.org; Version 0.9.0-CURRENT + *: + *: Copyright (C) 2003 Paul C. Buetow, Volker Richter + *: Copyright (C) 2004 Paul C. Buetow + *: Copyright (C) 2005 EXA Digital Solutions GbR + *: Copyright (C) 2006, 2007 Paul C. Buetow + *: + *: This program is free software; you can redistribute it and/or + *: modify it under the terms of the GNU General Public License + *: as published by the Free Software Foundation; either version 2 + *: 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 General Public License for more details. + *: + *: You should have received a copy of the GNU General Public License + *: along with this program; if not, write to the Free Software + *: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *:*/ + +#ifndef DUMP_CPP +#define DUMP_CPP + +#include "dump.h" + +using namespace std; + +const string dumpable::s_sep = "->"; +const int dumpable::i_max_level = 100; + +dumpable::dumpable() +{ + initialize(0); +} + +void +dumpable::initialize(int i_level) +{ + this->i_level = i_level; + this->i_lined = i_level; + this->b_lined = false; + this->b_next_no_nl = false; + this->s_dump = ""; +} + +string +dumpable::dump() +{ + return dump(0); +} + +string +dumpable::dump(int i_level) +{ + initialize(i_level); + dumpit(); + return s_dump; +} + +void +dumpable::add +(string s_line) +{ + if ( i_lined > i_max_level ) + i_lined = i_max_level; + + if (!b_lined) + s_dump.append(s_sep); + + else + for ( int i = 0; i < i_lined; ++i ) + s_dump.append(" "); + + s_dump.append(s_line); + + if (b_next_no_nl) + b_next_no_nl = false; + + else + s_dump.append("\n"); + + if (!b_lined) + { + b_lined = true; + i_lined = i_level + s_sep.length(); + } +} + +int +dumpable::get_level() const +{ + return i_lined; +} + +dump::dump(vector<string> vec_params) +{ + if (vec_params.empty()) + { + cout << CLIPRMO << "all conf sock"; + cout << " chat modl sman"; //<< Not for yhttpd + cout << endl; + return; + } + + cout << run(vec_params); +} + +string +dump::run(vector<string> &vec_params) +{ + string s_ret(""); + string s_part; + + vector<string>::iterator iter; + for (iter = vec_params.begin(); iter != vec_params.end(); ++iter) + { + s_part = *iter; + + if (!s_part.compare("conf") || !s_part.compare("all")) + s_ret.append(wrap::CONF->dump()); + + if (!s_part.compare("sock") || !s_part.compare("all")) + s_ret.append(wrap::SOCK->dump()); + + //<<* + if (!s_part.compare("modl") || !s_part.compare("all")) + s_ret.append(wrap::MODL->dump()); + + if (!s_part.compare("sman") || !s_part.compare("all")) + s_ret.append(wrap::SMAN->dump()); + + if (!s_part.compare("chat") || !s_part.compare("all")) + s_ret.append(wrap::CHAT->dump()); + //*>> + } + + return s_ret; +} + +#endif diff --git a/0.8/src/monitor/dump.h b/0.8/src/monitor/dump.h new file mode 100644 index 0000000..7f4b59b --- /dev/null +++ b/0.8/src/monitor/dump.h @@ -0,0 +1,87 @@ +/*:* + *: File: ./src/monitor/dump.h + *: + *: yChat; Homepage: ychat.buetow.org; Version 0.9.0-CURRENT + *: + *: Copyright (C) 2003 Paul C. Buetow, Volker Richter + *: Copyright (C) 2004 Paul C. Buetow + *: Copyright (C) 2005 EXA Digital Solutions GbR + *: Copyright (C) 2006, 2007 Paul C. Buetow + *: + *: This program is free software; you can redistribute it and/or + *: modify it under the terms of the GNU General Public License + *: as published by the Free Software Foundation; either version 2 + *: 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 General Public License for more details. + *: + *: You should have received a copy of the GNU General Public License + *: along with this program; if not, write to the Free Software + *: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *:*/ + +#include "../incl.h" + +#ifndef DUMP_H +#define DUMP_H + +using namespace std; + +class dumpable +{ +private: + int i_level; + int i_lined; + bool b_lined; + bool b_next_no_nl; + string s_dump; + + static const string s_sep; + static const int i_max_level; + + virtual void dumpit() = 0; + void initialize(int i_level); + void reset(); + +protected: + void add + (unsigned i_num) + { + add + ("<unsigned>"); + } + + void add + (int i_num) + { + add + ("<int>"); + } + + void add + (string s_line); + dumpable(); + + void next_no_newline() + { + b_next_no_nl = true; + } + +public: + string dump(); + string dump(int i_level); + int get_level() const; +}; + +class dump +{ +private: + string run(vector<string> &vec_params); +public: + dump(vector<string> vec_params); +}; + +#endif diff --git a/0.8/src/monitor/stats.cpp b/0.8/src/monitor/stats.cpp new file mode 100644 index 0000000..cd69673 --- /dev/null +++ b/0.8/src/monitor/stats.cpp @@ -0,0 +1,139 @@ +/*:* + *: File: ./src/monitor/stats.cpp + *: + *: yChat; Homepage: ychat.buetow.org; Version 0.9.0-CURRENT + *: + *: Copyright (C) 2003 Paul C. Buetow, Volker Richter + *: Copyright (C) 2004 Paul C. Buetow + *: Copyright (C) 2005 EXA Digital Solutions GbR + *: Copyright (C) 2006, 2007 Paul C. Buetow + *: + *: This program is free software; you can redistribute it and/or + *: modify it under the terms of the GNU General Public License + *: as published by the Free Software Foundation; either version 2 + *: 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 General Public License for more details. + *: + *: You should have received a copy of the GNU General Public License + *: along with this program; if not, write to the Free Software + *: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *:*/ + +#ifndef STATS_CPP +#define STATS_CPP + +#include "stats.h" + +using namespace std; + +stats::stats() +{ + i_rusage_vec_size = tool::string2int( + wrap::CONF->get_elem("httpd.stats.rusagehistory")); + + i_num_rooms = 0; //<< + + +} + +stats::~stats() +{} + +void +stats::update_rusage_history() +{ + wrap::system_message(STATUPR); + + rusage* p_rusage = new rusage; + getrusage( RUSAGE_SELF, p_rusage ); + + map<string,long> map_rusage; + + map_rusage["ru_maxrss"] = p_rusage->ru_maxrss; + map_rusage["ru_ixrss"] = p_rusage->ru_ixrss; + map_rusage["ru_idrss"] = p_rusage->ru_idrss; + map_rusage["ru_isrss"] = p_rusage->ru_isrss; + map_rusage["ru_minflt"] = p_rusage->ru_minflt; + map_rusage["ru_majflt"] = p_rusage->ru_majflt; + map_rusage["ru_nswap"] = p_rusage->ru_nswap; + map_rusage["ru_inblock"] = p_rusage->ru_inblock; + map_rusage["ru_oublock"] = p_rusage->ru_oublock; + map_rusage["ru_msgsnd"] = p_rusage->ru_msgsnd; + map_rusage["ru_msgrcv"] = p_rusage->ru_msgrcv; + map_rusage["ru_nsignals"] = p_rusage->ru_nsignals; + map_rusage["ru_nvcsw"] = p_rusage->ru_nvcsw; + map_rusage["ru_nivcsw"] = p_rusage->ru_nivcsw; + + delete p_rusage; + + + if ( vec_rusage_history.size() >= i_rusage_vec_size ) + vec_rusage_history.erase( vec_rusage_history.begin() ); + + vec_rusage_history.push_back(map_rusage); + +} + +void +stats::set_rusage_vec_size( int i_rusage_vec_size ) +{ + this->i_rusage_vec_size = i_rusage_vec_size; +} + +long +stats::get_ru_maxrss() +{ + rusage* p_rusage = new rusage; + getrusage( RUSAGE_SELF, p_rusage ); + + long l_ret = p_rusage->ru_maxrss; + delete p_rusage; + + return l_ret; +} + +string +stats::get_rusage_history( string s_type, string s_seperator ) +{ + string s_ret; + int i_count = 0; + vector< map<string,long> >::iterator iter; + + + for ( iter = vec_rusage_history.begin(); + iter != vec_rusage_history.end(); + iter++, i_count++ ) + s_ret.append(s_seperator + + tool::int2string(i_count) + ". " + iter->find(s_type)->first + " " + + tool::int2string( iter->find(s_type)->second) + "\n"); + + + return s_ret; +} + +//<<* +int +stats::get_num_rooms() +{ + int i_ret = i_num_rooms; + return i_ret; +} + +void +stats::increment_num_rooms() +{ + ++i_num_rooms; +} +void +stats::decrement_num_rooms() +{ + --i_num_rooms; +} + +//*>> + +#endif diff --git a/0.8/src/monitor/stats.h b/0.8/src/monitor/stats.h new file mode 100644 index 0000000..4b8aa13 --- /dev/null +++ b/0.8/src/monitor/stats.h @@ -0,0 +1,66 @@ +/*:* + *: File: ./src/monitor/stats.h + *: + *: yChat; Homepage: ychat.buetow.org; Version 0.9.0-CURRENT + *: + *: Copyright (C) 2003 Paul C. Buetow, Volker Richter + *: Copyright (C) 2004 Paul C. Buetow + *: Copyright (C) 2005 EXA Digital Solutions GbR + *: Copyright (C) 2006, 2007 Paul C. Buetow + *: + *: This program is free software; you can redistribute it and/or + *: modify it under the terms of the GNU General Public License + *: as published by the Free Software Foundation; either version 2 + *: 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 General Public License for more details. + *: + *: You should have received a copy of the GNU General Public License + *: along with this program; if not, write to the Free Software + *: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *:*/ + +#include "../incl.h" + +#ifndef STATS_H +#define STATS_H + +#include "../tool/tool.h" + +#include <stdio.h> +#include <sys/types.h> +#include <sys/time.h> +#include <sys/resource.h> + +using namespace std; + +class stats +{ +private: + // Specifies the max. amount of elements in vec_rusage_history; + int i_rusage_vec_size; + // History of the last i_rusage_vec_size rusage values. + vector< map<string,long> > vec_rusage_history; + + int i_num_rooms; //<< + + void set_rusage_vec_size( int i_rusage_vec_size ); + +public: + stats( ); + ~stats( ); + + //<<* + int get_num_rooms(); + void increment_num_rooms(); + void decrement_num_rooms(); + //*>> + void update_rusage_history(); + string get_rusage_history( string s_type, string s_seperator ); + long get_ru_maxrss(); +}; + +#endif |
