@@ -96,49 +96,6 @@ class logging_delegate
9696 virtual void log_error (const std::string& s) const ;
9797};
9898
99- /* *
100- * Delegate class used to validate requests before serve it
101- **/
102- class request_validator
103- {
104- public:
105- /* *
106- * Delegate constructor
107- **/
108- request_validator ();
109- /* *
110- * Destructor of the class
111- **/
112- virtual ~request_validator ();
113- /* *
114- * Method used to validate a request. The validation method is entirely based upon the requestor address.
115- * @param address The requestor address
116- * @return true if the request is considered to be valid, false otherwise.
117- **/
118- virtual bool validate (const std::string& address) const ;
119- };
120-
121- /* *
122- * Delegate class used to unescape requests uri before serving it.
123- **/
124- class unescaper
125- {
126- public:
127- /* *
128- * Delegate constructor
129- **/
130- unescaper ();
131- /* *
132- * Destructor of the class
133- **/
134- virtual ~unescaper ();
135- /* *
136- * Method used to unescape the uri.
137- * @param s pointer to the uri string representation to unescape.
138- **/
139- virtual void unescape (char * s) const ;
140- };
141-
14299class event_supplier
143100{
144101 public:
@@ -160,6 +117,9 @@ class event_supplier
160117
161118class create_webserver ;
162119
120+ typedef bool (*validator_ptr)(const std::string&);
121+ typedef void (*unescaper_ptr)(char *);
122+
163123/* *
164124 * Class representing the webserver. Main class of the apis.
165125**/
@@ -196,8 +156,8 @@ class webserver
196156 int connection_timeout = DEFAULT_WS_TIMEOUT,
197157 int per_IP_connection_limit = 0 ,
198158 logging_delegate* log_delegate = 0x0 ,
199- request_validator* validator = 0x0 ,
200- unescaper* unescaper_pointer = 0x0 ,
159+ validator_ptr validator = 0x0 ,
160+ unescaper_ptr unescaper = 0x0 ,
201161 const struct sockaddr * bind_address = 0x0 ,
202162 int bind_socket = 0 ,
203163 int max_thread_stack_size = 0 ,
@@ -281,13 +241,25 @@ class webserver
281241
282242 void set_logging_delegate (logging_delegate* log_delegate, bool delete_old = false );
283243
284- const request_validator* get_request_validator () const ;
244+ const validator_ptr get_request_validator () const
245+ {
246+ return this ->validator ;
247+ }
285248
286- void set_request_validator (request_validator* validator, bool delete_old = false );
249+ void set_request_validator (validator_ptr validator)
250+ {
251+ this ->validator = validator;
252+ }
287253
288- const unescaper* get_unescaper () const ;
254+ const unescaper_ptr get_unescaper () const
255+ {
256+ return this ->unescaper ;
257+ }
289258
290- void set_unescaper (unescaper* unescaper_pointer, bool delete_old = false );
259+ void set_unescaper (unescaper_ptr unescaper)
260+ {
261+ this ->unescaper = unescaper;
262+ }
291263
292264 void register_event_supplier (const std::string& id, event_supplier* ev_supplier);
293265
@@ -306,8 +278,8 @@ class webserver
306278 int connection_timeout;
307279 int per_IP_connection_limit;
308280 logging_delegate* log_delegate;
309- request_validator* validator;
310- unescaper* unescaper_pointer ;
281+ validator_ptr validator;
282+ unescaper_ptr unescaper ;
311283 const struct sockaddr * bind_address;
312284 int bind_socket;
313285 int max_thread_stack_size;
@@ -470,7 +442,7 @@ class create_webserver
470442 _per_IP_connection_limit (0 ),
471443 _log_delegate (0x0 ),
472444 _validator (0x0 ),
473- _unescaper_pointer (0x0 ),
445+ _unescaper (0x0 ),
474446 _bind_address (0x0 ),
475447 _bind_socket (0 ),
476448 _max_thread_stack_size (0 ),
@@ -509,7 +481,7 @@ class create_webserver
509481 _per_IP_connection_limit(0 ),
510482 _log_delegate(0x0 ),
511483 _validator(0x0 ),
512- _unescaper_pointer (0x0 ),
484+ _unescaper (0x0 ),
513485 _bind_address(0x0 ),
514486 _bind_socket(0 ),
515487 _max_thread_stack_size(0 ),
@@ -546,8 +518,8 @@ class create_webserver
546518 create_webserver& connection_timeout (int connection_timeout) { _connection_timeout = connection_timeout; return *this ; }
547519 create_webserver& per_IP_connection_limit (int per_IP_connection_limit) { _per_IP_connection_limit = per_IP_connection_limit; return *this ; }
548520 create_webserver& log_delegate (logging_delegate* log_delegate) { _log_delegate = log_delegate; return *this ; }
549- create_webserver& validator (request_validator* validator) { _validator = validator; return *this ; }
550- create_webserver& unescaper_pointer ( unescaper* unescaper_pointer ) { _unescaper_pointer = unescaper_pointer ; return *this ; }
521+ create_webserver& validator (validator_ptr validator) { _validator = validator; return *this ; }
522+ create_webserver& unescaper (unescaper_ptr unescaper ) { _unescaper = unescaper ; return *this ; }
551523 create_webserver& bind_address (const struct sockaddr * bind_address) { _bind_address = bind_address; return *this ; }
552524 create_webserver& bind_socket (int bind_socket) { _bind_socket = bind_socket; return *this ; }
553525 create_webserver& max_thread_stack_size (int max_thread_stack_size) { _max_thread_stack_size = max_thread_stack_size; return *this ; }
@@ -594,8 +566,8 @@ class create_webserver
594566 int _connection_timeout;
595567 int _per_IP_connection_limit;
596568 logging_delegate* _log_delegate;
597- request_validator* _validator;
598- unescaper* _unescaper_pointer ;
569+ validator_ptr _validator;
570+ unescaper_ptr _unescaper ;
599571 const struct sockaddr * _bind_address;
600572 int _bind_socket;
601573 int _max_thread_stack_size;
0 commit comments