OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
http_server.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef __HTTP_SERVER_H__
6 #define __HTTP_SERVER_H__
7 
8 #include <map>
9 #include <string>
10 
11 #include <boost/function.hpp>
12 
13 #include "io/ssl_server.h"
14 #include "base/util.h"
15 
16 #define HTTP_WILDCARD_ENTRY "_match_any_"
17 
18 class EventManager;
19 class HttpRequest;
20 class HttpSession;
21 struct SslConfig {
22  std::string keyfile;
23  std::string certfile;
24  std::string ca_cert;
27 
28  explicit SslConfig()
29  : keyfile(), certfile(), ca_cert(), ssl_enabled(false), ssl_insecure(false) {
30  }
32  }
33 };
34 
35 class HttpServer : public SslServer {
36 public:
37  typedef boost::function<void(HttpSession *session, const HttpRequest *)>
39  explicit HttpServer(EventManager *evm, const SslConfig &config=SslConfig(),
40  uint8_t dscp = 0);
41  virtual ~HttpServer();
42 
43  virtual SslSession *AllocSession(SslSocket *socket);
44  virtual bool AcceptSession(SslSession *session);
45  virtual bool AcceptSession(TcpSession *session);
46 
47  void RegisterHandler(const std::string &path, HttpHandlerFn handler);
48  HttpHandlerFn GetHandler(const std::string &path);
49  void Shutdown();
50  void UpdateDscp(uint8_t value);
51 
52 private:
53  typedef std::map<std::string, HttpHandlerFn> HandlerTrie;
55  uint8_t dscp_value_;
57 };
58 
59 #endif // __HTTP_SERVER_H__
virtual ~HttpServer()
Definition: http_server.cc:67
boost::function< void(HttpSession *session, const HttpRequest *)> HttpHandlerFn
Definition: http_server.h:38
HttpServer(EventManager *evm, const SslConfig &config=SslConfig(), uint8_t dscp=0)
Definition: http_server.cc:12
std::string ca_cert
Definition: http_server.h:24
boost::asio::ssl::stream< boost::asio::ip::tcp::socket > SslSocket
Definition: ssl_server.h:16
bool ssl_enabled
Definition: http_server.h:25
void Shutdown()
Definition: http_server.cc:71
virtual SslSession * AllocSession(SslSocket *socket)
Definition: http_server.cc:76
HttpHandlerFn GetHandler(const std::string &path)
Definition: http_server.cc:106
std::string certfile
Definition: http_server.h:23
void UpdateDscp(uint8_t value)
Definition: http_server.cc:118
DISALLOW_COPY_AND_ASSIGN(HttpServer)
std::map< std::string, HttpHandlerFn > HandlerTrie
Definition: http_server.h:53
bool ssl_insecure
Definition: http_server.h:26
HandlerTrie http_handlers_
Definition: http_server.h:54
virtual bool AcceptSession(SslSession *session)
Definition: http_server.cc:93
uint8_t dscp_value_
Definition: http_server.h:55
std::string keyfile
Definition: http_server.h:22
void RegisterHandler(const std::string &path, HttpHandlerFn handler)
Definition: http_server.cc:102
static EventManager evm