NetBurner 3.5.6
PDF Version
diagnostics.h
1/*NB_REVISION*/
2
3/*NB_COPYRIGHT*/
4
43#ifndef DIAGNOSTICS_INTERNAL_H
44#define DIAGNOSTICS_INTERNAL_H
45
46#include <nbstring.h>
47
50{
51 private:
52 NBString Name;
53 DiagItemClass *m_pNext;
54 virtual void ServeContent(int fd) = 0;
55 void ServeSubContent(int fd,NBString & remainder);
56 static void ServerRoot(int fd, const char *pUrl);
57 void InsertInList();
58 void RemoveList();
59
60 public:
61 static void ServeBody(int fd);
62 DiagItemClass(const char *name);
63 DiagItemClass(const NBString &ns);
65};
66
75typedef void(diagcallback)(int sock);
76
77
80{
81 diagcallback *m_pF;
82 virtual void ServeContent(int fd) { m_pF(fd); }
83 public:
90 DiagCallBack(const char *name, diagcallback *pFunc) : DiagItemClass(name) { m_pF = pFunc; }
91};
92
93
94
97{
98 private:
99 volatile void *p;
100 size_t siz;
101 uint16_t flag;
102
103 public:
116 DiagVarMon(const char *name, uint32_t &v) : DiagItemClass(name)
117 {
118 p = &v;
119 siz = sizeof(v);
120 flag = 1;
121 };
122 DiagVarMon(const char *name, uint16_t &v) : DiagItemClass(name)
123 {
124 p = &v;
125 siz = sizeof(v);
126 flag = 1;
127 };
128 DiagVarMon(const char *name, uint8_t &v) : DiagItemClass(name)
129 {
130 p = &v;
131 siz = sizeof(v);
132 flag = 1;
133 };
134 DiagVarMon(const char *name, int32_t &v) : DiagItemClass(name)
135 {
136 p = &v;
137 siz = sizeof(v);
138 flag = 0;
139 };
140 DiagVarMon(const char *name, int16_t &v) : DiagItemClass(name)
141 {
142 p = &v;
143 siz = sizeof(v);
144 flag = 0;
145 };
146 DiagVarMon(const char *name, int8_t &v) : DiagItemClass(name)
147 {
148 p = &v;
149 siz = sizeof(v);
150 flag = 0;
151 };
152 DiagVarMon(const char *name, char &v) : DiagItemClass(name)
153 {
154 p = &v;
155 siz = sizeof(v);
156 flag = 0;
157 };
158 DiagVarMon(const char *name, int &v) : DiagItemClass(name)
159 {
160 p = &v;
161 siz = sizeof(v);
162 flag = 0;
163 };
164 DiagVarMon(const char *name, volatile uint32_t &v) : DiagItemClass(name)
165 {
166 p = &v;
167 siz = sizeof(v);
168 flag = 1;
169 };
170 DiagVarMon(const char *name, volatile uint16_t &v) : DiagItemClass(name)
171 {
172 p = &v;
173 siz = sizeof(v);
174 flag = 1;
175 };
176 DiagVarMon(const char *name, volatile uint8_t &v) : DiagItemClass(name)
177 {
178 p = &v;
179 siz = sizeof(v);
180 flag = 1;
181 };
182 DiagVarMon(const char *name, volatile int32_t &v) : DiagItemClass(name)
183 {
184 p = &v;
185 siz = sizeof(v);
186 flag = 0;
187 };
188 DiagVarMon(const char *name, volatile int16_t &v) : DiagItemClass(name)
189 {
190 p = &v;
191 siz = sizeof(v);
192 flag = 0;
193 };
194 DiagVarMon(const char *name, volatile int8_t &v) : DiagItemClass(name)
195 {
196 p = &v;
197 siz = sizeof(v);
198 flag = 0;
199 };
200 DiagVarMon(const char *name, volatile char &v) : DiagItemClass(name)
201 {
202 p = &v;
203 siz = sizeof(v);
204 flag = 0;
205 };
206 DiagVarMon(const char *name, volatile int &v) : DiagItemClass(name)
207 {
208 p = &v;
209 siz = sizeof(v);
210 flag = 0;
211 };
212 DiagVarMon(const char *name, volatile float &v) : DiagItemClass(name)
213 {
214 p = &v;
215 siz = sizeof(v);
216 flag = 2;
217 };
218 DiagVarMon(const char *name, volatile double &v) : DiagItemClass(name)
219 {
220 p = &v;
221 siz = sizeof(v);
222 flag = 2;
223 };
224 DiagVarMon(const char *name, float &v) : DiagItemClass(name)
225 {
226 p = &v;
227 siz = sizeof(v);
228 flag = 2;
229 };
230 DiagVarMon(const char *name, double &v) : DiagItemClass(name)
231 {
232 p = &v;
233 siz = sizeof(v);
234 flag = 2;
235 };
236 virtual void ServeContent(int fd);
237};
238
239
242{
243 private:
244 volatile const char *pString;
245 NBString * pStrStr;
246
247 public:
254 DiagStrMon(const char *name, const char *pstr) : DiagItemClass(name) { pString = pstr; pStrStr=0;};
255
262 DiagStrMon(const char *name, NBString & s) : DiagItemClass(name) { pString = 0; pStrStr=&s;};
263
264 virtual void ServeContent(int fd);
265};
266
267
270{
271 private:
272 volatile void *pPtr;
273
274 public:
281 DiagPtrMon(const char *name, void *p) : DiagItemClass(name) { pPtr = p; };
282
283 virtual void ServeContent(int fd);
284};
285
287class ParsedURI;
288
304bool SendDiagReport(const char * pUrl,const char *pUser = 0, const char *pPass = 0);
305
320bool SendDiagReport(ParsedURI & uri,const char *pUser = 0, const char *pPass = 0 );
321
331
332#endif
333
Callback-based diagnostic item that calls a custom function to generate diagnostic content.
Definition diagnostics.h:80
DiagCallBack(const char *name, diagcallback *pFunc)
Constructor for callback-based diagnostic item.
Definition diagnostics.h:90
Base class for all diagnostic items.
Definition diagnostics.h:50
Monitor and report pointer values.
Definition diagnostics.h:270
DiagPtrMon(const char *name, void *p)
Constructor for monitoring pointer values.
Definition diagnostics.h:281
virtual void ServeContent(int fd)
Output the pointer value as a hexadecimal string.
Monitor and report string values.
Definition diagnostics.h:242
virtual void ServeContent(int fd)
Output the string value to the diagnostic stream.
DiagStrMon(const char *name, NBString &s)
Constructor for monitoring NBString object.
Definition diagnostics.h:262
DiagStrMon(const char *name, const char *pstr)
Constructor for monitoring C-style string.
Definition diagnostics.h:254
Monitor and report the value of numeric variables.
Definition diagnostics.h:97
virtual void ServeContent(int fd)
Pure virtual function to output diagnostic content.
DiagVarMon(const char *name, uint32_t &v)
Constructor for monitoring numeric variables.
Definition diagnostics.h:116
Lightweight alternative to C++ CString class.
Definition nbstring.h:118
Parsed Uniform Resource Identifier Class (URI)
Definition http_funcs.h:62
bool SendDiagReport(const char *pUrl, const char *pUser=0, const char *pPass=0)
Send the complete diagnostic report to an external URL via HTTP POST.
void diagcallback(int sock)
Callback function type for custom diagnostic reports.
Definition diagnostics.h:75
void InitPlatformDiag()
Initialize platform-specific diagnostics.