summaryrefslogtreecommitdiff
path: root/src/monitor/dump.cpp
blob: 0eb62c96efcd8496fee6569318d602142dee02e3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#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