42#include <HttpServer.h>
54#define HttpTrace_doRequestMask 0x01
55#define HttpTrace_doRequestHeadersMask 0x02
56#define HttpTrace_doResponseHeadersMask 0x04
57#define HttpTrace_doResponseBodyMask 0x08
58#define HttpTrace_doHttp11StateMask 0x10
59#define HttpTrace_doReqBufOverflowMask 0x20
62typedef void (*HttpTrace_Flush)(
char* buf,
int bufLen);
172 static void vprintf(
int prio,
const char* fmt, va_list argList);
179 static void printf(
int prio,
const char* fmt, ...);
186 static void write(
int prio,
const char* buf,
int len = -1);
316BA_API
int HttpTrace_setPrio(
int prio);
317BA_API
void HttpTrace_setFLushCallback(HttpTrace_Flush fcb);
318BA_API HttpTrace_Flush HttpTrace_getFLushCallback(
void);
319BA_API
void HttpTrace_vprintf(
int prio,
const char* fmt, va_list argList);
320BA_API
void HttpTrace_printf(
int prio,
const char* fmt, ...);
321BA_API
void HttpTrace_write(
int prio,
const char* buf,
int len);
322BA_API
void HttpTrace_flush(
void);
324BA_API
void HttpTrace_setRequest(BaBool cmd);
325BA_API
void HttpTrace_setRequestHeaders(BaBool cmd);
326BA_API
void HttpTrace_setResponseHeaders(BaBool cmd);
327BA_API
void HttpTrace_setResponseBody(BaBool cmd);
328BA_API
void HttpTrace_setHttp11State(BaBool cmd);
329BA_API
void HttpTrace_setReqBufOverflow(BaBool cmd);
330BA_API
int HttpTrace_setBufSize(
int size);
331BA_API
void HttpTrace_close(
void);
334BA_API U8 HttpTrace_getTraceCmds(
void);
335#define HttpTrace_isRequestSet() \
336 (HttpTrace_getTraceCmds() & HttpTrace_doRequestMask ? TRUE : FALSE)
337#define HttpTrace_isRequestHeadersSet() \
338 (HttpTrace_getTraceCmds() & HttpTrace_doRequestHeadersMask ? TRUE : FALSE)
339#define HttpTrace_isResponseHeadersSet() \
340 (HttpTrace_getTraceCmds() & HttpTrace_doResponseHeadersMask ? TRUE : FALSE)
341#define HttpTrace_isResponseBodySet() \
342 (HttpTrace_getTraceCmds() & HttpTrace_doResponseBodyMask ? TRUE : FALSE)
343#define HttpTrace_isHttp11StateSet() \
344 (HttpTrace_getTraceCmds() & HttpTrace_doHttp11StateMask ? TRUE : FALSE)
349#define TRPR(data) HttpTrace_TRPR data
350BA_API
void HttpTrace_TRPR(
const char* fmt, ...);
355#define HttpTrace_doRequest() \
356 (HttpTrace_get()->traceCmds & HttpTrace_doRequestMask)
357#define HttpTrace_doRequestHeaders() \
358 (HttpTrace_get()->traceCmds & HttpTrace_doRequestHeadersMask)
359#define HttpTrace_doResponseHeaders() \
360 (HttpTrace_get()->traceCmds & HttpTrace_doResponseHeadersMask)
361#define HttpTrace_doResponseBody() \
362 (HttpTrace_get()->traceCmds & HttpTrace_doResponseBodyMask)
363#define HttpTrace_doHttp11State() \
364 (HttpTrace_get()->traceCmds & HttpTrace_doHttp11StateMask)
365#define HttpTrace_doReqBufOverflow() \
366 (HttpTrace_get()->traceCmds & HttpTrace_doReqBufOverflowMask)
367BA_API
BufPrint* HttpTrace_getWriter(
void);
368BA_API
void HttpTrace_releaseWriter(
void);
372 return HttpTrace_setPrio(prio);
375 HttpTrace_setFLushCallback(fcb); }
377 HttpTrace_vprintf(prio, fmt, argList); }
381 HttpTrace_vprintf(prio, fmt, varg);
385 HttpTrace_write(prio, buf, len); }
388 return HttpTrace_getWriter(); }
390 HttpTrace_releaseWriter(); }
392 HttpTrace_setRequest(cmd); }
394 HttpTrace_setRequestHeaders(cmd); }
396 HttpTrace_setResponseHeaders(cmd); }
398 HttpTrace_setResponseBody(cmd); }
400 HttpTrace_setHttp11State(cmd); }
402 HttpTrace_setReqBufOverflow(cmd); }
404 return HttpTrace_setBufSize(size); }
409 return HttpTrace_isRequestSet() ? true :
false;
412 return HttpTrace_isRequestHeadersSet() ? true :
false;
415 return HttpTrace_isResponseHeadersSet() ? true :
false;
418 return HttpTrace_isResponseBodySet() ? true :
false;
421 return HttpTrace_isHttp11StateSet() ? true :
false;
434 _bufPrint = HttpTrace_getWriter();
442 if(_bufPrint) {_bufPrint=0; HttpTrace_releaseWriter(); }
447 if(!_bufPrint) {_bufPrint = HttpTrace_getWriter(); }
The BufPrint class, which implements an ANSI compatible printf method, is a base class used by severa...
Definition: BufPrint.h:122
HttpTraceWriteLock is a C++ class that makes it easier to lock the trace by using method HttpTrace::g...
Definition: HttpTrace.h:432
BufPrint * operator->()
Operator that makes it possible to do myLock->printf("hi");.
Definition: HttpTrace.h:456
void release()
Release the trace if not already released.
Definition: HttpTrace.h:441
void lock()
Lock the trace if not already locked.
Definition: HttpTrace.h:446
Trace the communication between a client and the server.
Definition: HttpTrace.h:124
static bool isResponseBodySet()
Returns true if response-body tracing is enabled.
Definition: HttpTrace.h:417
static void printf(int prio, const char *fmt,...)
Write data to the trace buffer.
Definition: HttpTrace.h:378
static int setPrio(int prio)
Set the trace message priority filter.
Definition: HttpTrace.h:371
static void flush()
Force a flush on data in trace buffer; i.e., call the flush callback.
Definition: HttpTrace.h:405
static void releaseWriter(void)
Release the trace.
Definition: HttpTrace.h:389
static void setResponseHeaders(bool cmd)
If enabled, the web-server dumps the content of the response header to the trace buffer.
Definition: HttpTrace.h:395
static void setHttp11State(bool cmd)
If enabled, prints the status for each active client connection of the internal "HTTP 1....
Definition: HttpTrace.h:399
static BufPrint * getWriter()
Get and lock the trace BufPrint object.
Definition: HttpTrace.h:387
static void setFLushCallback(HttpTrace_Flush fcb)
The HTTP_TRACE compile time macro adds the trace library to the Barracuda library,...
Definition: HttpTrace.h:374
static int setBufSize(int size)
Set trace buffer size.
Definition: HttpTrace.h:403
static bool isHttp11StateSet()
Returns true if HTTP/1.1 connection-state tracing is enabled.
Definition: HttpTrace.h:420
static void write(int prio, const char *buf, int len=-1)
Write data to the trace buffer.
Definition: HttpTrace.h:384
static void vprintf(int prio, const char *fmt, va_list argList)
Write data to the trace buffer.
Definition: HttpTrace.h:376
static bool isRequestSet()
Returns true if request-line tracing is enabled.
Definition: HttpTrace.h:408
static bool isResponseHeadersSet()
Returns true if response-header tracing is enabled.
Definition: HttpTrace.h:414
static bool isRequestHeadersSet()
Returns true if request-header tracing is enabled.
Definition: HttpTrace.h:411
static void setResponseBody(bool cmd)
If enabled, the web-server dumps the content of the response body to the trace buffer.
Definition: HttpTrace.h:397
static void setRequest(bool cmd)
Enable or disable request-line tracing.
Definition: HttpTrace.h:391
static void setRequestHeaders(bool cmd)
If enabled, the web-server dumps the content of the request header to the trace buffer.
Definition: HttpTrace.h:393
static void setReqBufOverflow(bool cmd)
Prints "ReqBufOverflow" if enabled and the HttpRequest buffer overflows.
Definition: HttpTrace.h:401