summaryrefslogtreecommitdiff
path: root/src/monitor/dump.cpp
blob: 71cc8628f1a440f460ae3b383ef3b8addbf89887 (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
118
119
120
#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