hobbes
a language, embedded compiler, and runtime for efficient dynamic expression evaluation, data storage and analysis
www.H
Go to the documentation of this file.
1 
2 #ifndef HI_WWW_HPP_INCLUDED
3 #define HI_WWW_HPP_INCLUDED
4 
5 #include <hobbes/hobbes.H>
6 #include <hobbes/events/httpd.H>
7 #include <unordered_map>
8 
9 namespace hi {
10 
11 class WWWServer {
12 public:
13  WWWServer(int port, hobbes::cc*);
14  ~WWWServer();
15 private:
16  int port;
18 
19  void printDefaultPage(int);
20  void printQueryResult(int, const std::string&);
21  void printFileContents(int, const std::string&);
22 
23  typedef void (*PrintPageFn)(int fd, const hobbes::array<char>* queryString);
24  struct HxpFile {
25  time_t ftime;
27  };
28  typedef std::unordered_map<std::string, HxpFile> HxpFiles;
29  HxpFiles hxpFiles;
30  const HxpFile& hxpFile(const std::string& fpath);
31  void evalHxpFile(const hobbes::HTTPRequest&, int fd, const std::string& fpath, const std::string& queryString);
32 
33  typedef std::map<std::string, std::string> MIMETypes;
34  MIMETypes mimeTypes;
35  std::string mimeType(const std::string& fpath);
36  std::string mimeTypeForExt(const std::string& ext);
37 
38  void eval(const hobbes::HTTPRequest& req, int fd);
39  static void evalHTTPRequest(const hobbes::HTTPRequest& req, int fd, void* ud);
40 
41  // useful bindings
42  typedef std::pair<const hobbes::array<char>*, const hobbes::array<char>*> VarBindingDesc;
44  VarBindingDescs* getVarBindingDescs();
45 };
46 
47 }
48 
49 #endif
50 
MIMETypes mimeTypes
Definition: www.H:34
std::unordered_map< std::string, HxpFile > HxpFiles
Definition: www.H:28
const HxpFile & hxpFile(const std::string &fpath)
Definition: www.C:181
WWWServer(int port, hobbes::cc *)
Definition: www.C:266
PrintPageFn f
Definition: www.H:26
~WWWServer()
Definition: www.C:287
Definition: httpd.H:14
void printFileContents(int, const std::string &)
Definition: www.C:407
void evalHxpFile(const hobbes::HTTPRequest &, int fd, const std::string &fpath, const std::string &queryString)
Definition: www.C:199
std::string mimeTypeForExt(const std::string &ext)
Definition: www.C:481
hobbes::cc * c
Definition: www.H:17
int port
Definition: www.H:16
Definition: www.H:24
HxpFiles hxpFiles
Definition: www.H:29
Definition: cio.H:7
std::pair< const hobbes::array< char > *, const hobbes::array< char > * > VarBindingDesc
Definition: www.H:42
std::string mimeType(const std::string &fpath)
Definition: www.C:470
void printQueryResult(int, const std::string &)
Definition: www.C:378
Definition: www.H:11
VarBindingDescs * getVarBindingDescs()
Definition: www.C:514
Definition: tylift.H:81
Definition: cc.H:64
std::map< std::string, std::string > MIMETypes
Definition: www.H:33
void eval(const hobbes::HTTPRequest &req, int fd)
Definition: www.C:432
time_t ftime
Definition: www.H:25
void(* PrintPageFn)(int fd, const hobbes::array< char > *queryString)
Definition: www.H:23
void printDefaultPage(int)
Definition: www.C:358
static void evalHTTPRequest(const hobbes::HTTPRequest &req, int fd, void *ud)
Definition: www.C:462
hobbes::array< VarBindingDesc > VarBindingDescs
Definition: www.H:43