Skip to content

Commit 830103f

Browse files
author
Sebastiano Merlino
committed
Removed logging_delegate an substituted with two explicit callbacks
(access_log and error_log)
1 parent d2b1c09 commit 830103f

File tree

2 files changed

+44
-69
lines changed

2 files changed

+44
-69
lines changed

src/httpserver/webserver.hpp

Lines changed: 32 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -70,32 +70,6 @@ namespace http {
7070
struct ip_representation;
7171
};
7272

73-
/**
74-
* Delegate class used to wrap callbacks dedicated to logging.
75-
**/
76-
class logging_delegate
77-
{
78-
public:
79-
/**
80-
* Delegate constructor.
81-
**/
82-
logging_delegate();
83-
/**
84-
* Destructor of the class
85-
**/
86-
virtual ~logging_delegate();
87-
/**
88-
* Method used to log access to the webserver.
89-
* @param s string to log
90-
**/
91-
virtual void log_access(const std::string& s) const;
92-
/**
93-
* Method used to log errors on the webserver.
94-
* @param s string to log
95-
**/
96-
virtual void log_error(const std::string& s) const;
97-
};
98-
9973
template <typename CHILD>
10074
class event_supplier
10175
{
@@ -135,7 +109,6 @@ class create_webserver;
135109

136110
typedef bool(*validator_ptr)(const std::string&);
137111
typedef void(*unescaper_ptr)(char*);
138-
139112
typedef void(*supply_events_ptr)(
140113
fd_set*,
141114
fd_set*,
@@ -144,8 +117,9 @@ typedef void(*supply_events_ptr)(
144117
);
145118

146119
typedef long(*get_timeout_ptr)();
147-
148120
typedef void(*dispatch_events_ptr)();
121+
typedef void(*log_access_ptr)(const std::string&);
122+
typedef void(*log_error_ptr)(const std::string&);
149123

150124
struct event_tuple;
151125

@@ -184,7 +158,8 @@ class webserver
184158
int memory_limit = 0,
185159
int connection_timeout = DEFAULT_WS_TIMEOUT,
186160
int per_IP_connection_limit = 0,
187-
logging_delegate* log_delegate = 0x0,
161+
log_access_ptr log_access = 0x0,
162+
log_error_ptr log_error = 0x0,
188163
validator_ptr validator = 0x0,
189164
unescaper_ptr unescaper = 0x0,
190165
const struct sockaddr* bind_address = 0x0,
@@ -266,9 +241,25 @@ class webserver
266241
bool is_valid(const std::string& key);
267242
void clean_cache();
268243

269-
const logging_delegate* get_logging_delegate() const;
244+
const log_access_ptr get_access_logger() const
245+
{
246+
return this->log_access;
247+
}
248+
249+
const log_error_ptr get_error_logger() const
250+
{
251+
return this->log_error;
252+
}
270253

271-
void set_logging_delegate(logging_delegate* log_delegate, bool delete_old = false);
254+
void set_access_logger(log_access_ptr log_access)
255+
{
256+
this->log_access = log_access;
257+
}
258+
259+
void set_error_logger(log_error_ptr log_error)
260+
{
261+
this->log_error = log_error;
262+
}
272263

273264
const validator_ptr get_request_validator() const
274265
{
@@ -308,7 +299,8 @@ class webserver
308299
int memory_limit;
309300
int connection_timeout;
310301
int per_IP_connection_limit;
311-
logging_delegate* log_delegate;
302+
log_access_ptr log_access;
303+
log_error_ptr log_error;
312304
validator_ptr validator;
313305
unescaper_ptr unescaper;
314306
const struct sockaddr* bind_address;
@@ -471,7 +463,8 @@ class create_webserver
471463
_memory_limit(0),
472464
_connection_timeout(DEFAULT_WS_TIMEOUT),
473465
_per_IP_connection_limit(0),
474-
_log_delegate(0x0),
466+
_log_access(0x0),
467+
_log_error(0x0),
475468
_validator(0x0),
476469
_unescaper(0x0),
477470
_bind_address(0x0),
@@ -510,7 +503,8 @@ class create_webserver
510503
_memory_limit(0),
511504
_connection_timeout(DEFAULT_WS_TIMEOUT),
512505
_per_IP_connection_limit(0),
513-
_log_delegate(0x0),
506+
_log_access(0x0),
507+
_log_error(0x0),
514508
_validator(0x0),
515509
_unescaper(0x0),
516510
_bind_address(0x0),
@@ -548,7 +542,8 @@ class create_webserver
548542
create_webserver& memory_limit(int memory_limit) { _memory_limit = memory_limit; return *this; }
549543
create_webserver& connection_timeout(int connection_timeout) { _connection_timeout = connection_timeout; return *this; }
550544
create_webserver& per_IP_connection_limit(int per_IP_connection_limit) { _per_IP_connection_limit = per_IP_connection_limit; return *this; }
551-
create_webserver& log_delegate(logging_delegate* log_delegate) { _log_delegate = log_delegate; return *this; }
545+
create_webserver& log_access(log_access_ptr log_access) { _log_access = log_access; return *this; }
546+
create_webserver& log_error(log_error_ptr log_error) { _log_error = log_error; return *this; }
552547
create_webserver& validator(validator_ptr validator) { _validator = validator; return *this; }
553548
create_webserver& unescaper(unescaper_ptr unescaper) { _unescaper = unescaper; return *this; }
554549
create_webserver& bind_address(const struct sockaddr* bind_address) { _bind_address = bind_address; return *this; }
@@ -596,7 +591,8 @@ class create_webserver
596591
int _memory_limit;
597592
int _connection_timeout;
598593
int _per_IP_connection_limit;
599-
logging_delegate* _log_delegate;
594+
log_access_ptr _log_access;
595+
log_error_ptr _log_error;
600596
validator_ptr _validator;
601597
unescaper_ptr _unescaper;
602598
const struct sockaddr* _bind_address;

src/webserver.cpp

Lines changed: 12 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -333,15 +333,6 @@ static void ignore_sigpipe ()
333333
fprintf (stderr, gettext("Failed to install SIGPIPE handler: %s\n"), strerror (errno));
334334
}
335335

336-
//LOGGING DELEGATE
337-
logging_delegate::logging_delegate() {}
338-
339-
logging_delegate::~logging_delegate() {}
340-
341-
void logging_delegate::log_access(const string& s) const {}
342-
343-
void logging_delegate::log_error(const string& s) const {}
344-
345336
//WEBSERVER CREATOR
346337
create_webserver& create_webserver::https_mem_key(const std::string& https_mem_key)
347338
{
@@ -377,7 +368,8 @@ webserver::webserver
377368
int memory_limit,
378369
int connection_timeout,
379370
int per_IP_connection_limit,
380-
logging_delegate* log_delegate,
371+
log_access_ptr log_access,
372+
log_error_ptr log_error,
381373
validator_ptr validator,
382374
unescaper_ptr unescaper,
383375
const struct sockaddr* bind_address,
@@ -414,7 +406,8 @@ webserver::webserver
414406
memory_limit(memory_limit),
415407
connection_timeout(connection_timeout),
416408
per_IP_connection_limit(per_IP_connection_limit),
417-
log_delegate(log_delegate),
409+
log_access(log_access),
410+
log_error(log_error),
418411
validator(validator),
419412
unescaper(unescaper),
420413
bind_address(bind_address),
@@ -455,7 +448,8 @@ webserver::webserver(const create_webserver& params):
455448
memory_limit(params._memory_limit),
456449
connection_timeout(params._connection_timeout),
457450
per_IP_connection_limit(params._per_IP_connection_limit),
458-
log_delegate(params._log_delegate),
451+
log_access(params._log_access),
452+
log_error(params._log_error),
459453
validator(params._validator),
460454
unescaper(params._unescaper),
461455
bind_address(params._bind_address),
@@ -497,7 +491,8 @@ webserver& webserver::operator=(const webserver& b)
497491
memory_limit = b.memory_limit;
498492
connection_timeout = b.connection_timeout;
499493
per_IP_connection_limit = b.per_IP_connection_limit;
500-
log_delegate = b.log_delegate;
494+
log_access = b.log_access;
495+
log_error = b.log_error;
501496
validator = b.validator;
502497
unescaper = b.unescaper;
503498
bind_address = b.bind_address;
@@ -1109,18 +1104,14 @@ void* uri_log(void* cls, const char* uri)
11091104
void error_log(void* cls, const char* fmt, va_list ap)
11101105
{
11111106
webserver* dws = static_cast<webserver*>(cls);
1112-
if(dws->log_delegate != 0x0)
1113-
{
1114-
dws->log_delegate->log_error(fmt);
1115-
}
1107+
if(dws->log_error != 0x0)
1108+
dws->log_error(fmt);
11161109
}
11171110

11181111
void access_log(webserver* dws, string uri)
11191112
{
1120-
if(dws->log_delegate != 0x0)
1121-
{
1122-
dws->log_delegate->log_access(uri);
1123-
}
1113+
if(dws->log_access != 0x0)
1114+
dws->log_access(uri);
11241115
}
11251116

11261117
size_t unescaper_func(void * cls, struct MHD_Connection *c, char *s)
@@ -1159,18 +1150,6 @@ int webserver::post_iterator (void *cls, enum MHD_ValueKind kind,
11591150
return MHD_YES;
11601151
}
11611152

1162-
const logging_delegate* webserver::get_logging_delegate() const
1163-
{
1164-
return this->log_delegate;
1165-
}
1166-
1167-
void webserver::set_logging_delegate(logging_delegate* log_delegate, bool delete_old)
1168-
{
1169-
if(delete_old && this->log_delegate != 0x0)
1170-
delete this->log_delegate;
1171-
this->log_delegate = log_delegate;
1172-
}
1173-
11741153
void webserver::upgrade_handler (void *cls, struct MHD_Connection* connection,
11751154
void **con_cls, int upgrade_socket)
11761155
{

0 commit comments

Comments
 (0)