cgv
web_server.h
1 #pragma once
2 
3 #include "http_request.h"
4 #include "thread.h"
5 
6 #include "lib_begin.h"
7 
8 namespace cgv {
9  namespace os {
10 
12 class CGV_API web_server
13 {
14 protected:
15  unsigned int port;
16  void* user_data;
17  friend class web_server_provider;
18 public:
20  web_server(unsigned int _port = 80);
22  virtual void handle_request(http_request& request) = 0;
24  void start();
26  void stop();
28  unsigned int get_port() const;
29 };
30 
32 class CGV_API web_server_thread : public thread, public web_server
33 {
34 public:
36  web_server_thread(unsigned int _port = 8080);
40  void start();
42  void run();
43 };
44 
46 class CGV_API web_server_provider
47 {
48 protected:
49  void*& ref_user_data(web_server* instance) const;
50 public:
51  virtual void start_web_server(web_server* instance) = 0;
52  virtual void stop_web_server(web_server* instance) = 0;
53 };
54 
56 extern CGV_API void register_web_server_provider(web_server_provider* wsp);
57 
59 template <class T>
61 {
63  register_web_server_provider(new T());
64  }
65 };
66 
67  }
68 }
69 
70 #include <cgv/config/lib_end.h>
cgv::os::web_server_provider_registration
template to facilitate registeration of a web server provider
Definition: web_server.h:61
cgv::os::web_server_thread
web server interface that runs in its own thread
Definition: web_server.h:33
cgv::os::web_server
simple interface for a web server
Definition: web_server.h:13
cgv::os::thread
Definition: thread.h:39
cgv::os::web_server::handle_request
virtual void handle_request(http_request &request)=0
reimplement to handle requests
cgv::os::web_server_provider
interface for a html_server provider
Definition: web_server.h:47
cgv::os::http_request
structure that contains all input and output parameters of a http request
Definition: http_request.h:11
cgv
the cgv namespace
Definition: vr_calib.cxx:9