OSDN Git Service

70ba2952d5b9e78fea411931213c24f8c38ad122
[iptd/iPTd.git] / src / ry0 / iPTd / HTTPD.cpp
1 /**\r
2  * @file HTTPDaemon.cpp\r
3  *\r
4  */\r
5 \r
6 #include <time.h>\r
7 \r
8 #define DBG_LEVEL 3\r
9 #include "Raym/Log.h"\r
10 \r
11 #include "keys.h"\r
12 #include "ry0/iPTd/HTTPD.h"\r
13 #include "ry0/iPTd/Controller.h"\r
14 \r
15 using namespace Raym;\r
16 \r
17 namespace ry0\r
18 {\r
19 namespace iPTd\r
20 {\r
21 \r
22 HTTPDaemon::HTTPDaemon()\r
23 {\r
24     _controller = NULL;\r
25     _httpd      = NULL;\r
26     _port       = -1;\r
27     _path       = NULL;\r
28 }\r
29 \r
30 HTTPDaemon::~HTTPDaemon()\r
31 {\r
32     RELEASE(_httpd);\r
33     RELEASE(_path);\r
34 \r
35     _controller = NULL;\r
36 }\r
37 \r
38 HTTPDaemon *HTTPDaemon::alloc()\r
39 {\r
40     return new HTTPDaemon();\r
41 }\r
42 \r
43 HTTPDaemon *HTTPDaemon::initWithController(Controller *controller, int port, String *path)\r
44 {\r
45     _controller = controller;\r
46     _port = port;\r
47     _path = path->retain();\r
48 \r
49     return this;\r
50 }\r
51 \r
52 bool HTTPDaemon::start()\r
53 {\r
54     if (_httpd == NULL)\r
55     {\r
56         _httpd = NET::HTTPDaemon::alloc()->initWithPort(_port, 10);\r
57         _httpd->setRootPath(_path);\r
58         _httpd->setDelegate(this);\r
59     }\r
60     return _httpd->start();\r
61 }\r
62 \r
63 void HTTPDaemon::stop()\r
64 {\r
65     _httpd->stop();\r
66 }\r
67 \r
68 NET::HTTPResponse *HTTPDaemon::request(NET::HTTPRequest *request, struct sockaddr_in *client)\r
69 {\r
70     DebugLog2("%s\n", __FUNCTION__);\r
71 \r
72     // 初期化チェック\r
73     bool flag = false;\r
74     EnterCriticalSection(&_cs);\r
75 //    flag = _initialized;\r
76     LeaveCriticalSection(&_cs);\r
77     if (!flag)\r
78     {\r
79 //        return NULL;\r
80     }\r
81 \r
82     NET::HTTPResponse *response = NULL;\r
83 \r
84     if (request->method()->isEqualToString("GET") ||\r
85         request->method()->isEqualToString("HEAD"))\r
86     {\r
87         // URI\r
88         String *uri = request->URI();\r
89         DebugLog0("request: %s\n", uri->cString());\r
90     }\r
91 \r
92 \r
93     return response;\r
94 }\r
95 \r
96 } // iPTd\r
97 } // ry0\r