resolve linking problem

This commit is contained in:
ipknHama 2014-04-17 18:18:02 +09:00
parent 9ee37ce4bf
commit af6bc11fb4
3 changed files with 36 additions and 42 deletions

View File

@ -45,25 +45,25 @@ namespace flask
};
template<>
int64_t routing_params::get<int64_t>(unsigned index) const
inline int64_t routing_params::get<int64_t>(unsigned index) const
{
return int_params[index];
}
template<>
uint64_t routing_params::get<uint64_t>(unsigned index) const
inline uint64_t routing_params::get<uint64_t>(unsigned index) const
{
return uint_params[index];
}
template<>
double routing_params::get<double>(unsigned index) const
inline double routing_params::get<double>(unsigned index) const
{
return double_params[index];
}
template<>
std::string routing_params::get<std::string>(unsigned index) const
inline std::string routing_params::get<std::string>(unsigned index) const
{
return string_params[index];
}

View File

@ -29,6 +29,28 @@ namespace flask
void handle()
{
static std::unordered_map<int, std::string> statusCodes = {
{200, "HTTP/1.1 200 OK\r\n"},
{201, "HTTP/1.1 201 Created\r\n"},
{202, "HTTP/1.1 202 Accepted\r\n"},
{204, "HTTP/1.1 204 No Content\r\n"},
{300, "HTTP/1.1 300 Multiple Choices\r\n"},
{301, "HTTP/1.1 301 Moved Permanently\r\n"},
{302, "HTTP/1.1 302 Moved Temporarily\r\n"},
{304, "HTTP/1.1 304 Not Modified\r\n"},
{400, "HTTP/1.1 400 Bad Request\r\n"},
{401, "HTTP/1.1 401 Unauthorized\r\n"},
{403, "HTTP/1.1 403 Forbidden\r\n"},
{404, "HTTP/1.1 404 Not Found\r\n"},
{500, "HTTP/1.1 500 Internal Server Error\r\n"},
{501, "HTTP/1.1 501 Not Implemented\r\n"},
{502, "HTTP/1.1 502 Bad Gateway\r\n"},
{503, "HTTP/1.1 503 Service Unavailable\r\n"},
};
request req = parser_.to_request();
res = handler_->handle(req);
@ -45,7 +67,7 @@ namespace flask
buffers_.emplace_back(status.data(), status.size());
}
if (res.code > 400 && res.body.empty())
if (res.code >= 400 && res.body.empty())
res.body = statusCodes[res.code].substr(9);
bool has_content_length = false;
@ -103,18 +125,16 @@ namespace flask
if (!ec)
{
bool ret = parser_.feed(buffer_.data(), bytes_transferred);
if (ret)
do_read();
else
{
socket_.close();
if (ret)
do_read();
else
{
socket_.close();
life_--;
if ((int)life_ == 0)
{
delete this;
}
}
life_--;
if ((int)life_ == 0)
delete this;
}
}
else
{
@ -123,9 +143,7 @@ namespace flask
life_--;
if ((int)life_ == 0)
{
delete this;
}
}
});
}
@ -153,9 +171,7 @@ namespace flask
socket_.close();
life_--;
if ((int)life_ == 0)
{
delete this;
}
}
});
}

View File

@ -4,28 +4,6 @@
namespace flask
{
std::unordered_map<int, std::string> statusCodes = {
{200, "HTTP/1.1 200 OK\r\n"},
{201, "HTTP/1.1 201 Created\r\n"},
{202, "HTTP/1.1 202 Accepted\r\n"},
{204, "HTTP/1.1 204 No Content\r\n"},
{300, "HTTP/1.1 300 Multiple Choices\r\n"},
{301, "HTTP/1.1 301 Moved Permanently\r\n"},
{302, "HTTP/1.1 302 Moved Temporarily\r\n"},
{304, "HTTP/1.1 304 Not Modified\r\n"},
{400, "HTTP/1.1 400 Bad Request\r\n"},
{401, "HTTP/1.1 401 Unauthorized\r\n"},
{403, "HTTP/1.1 403 Forbidden\r\n"},
{404, "HTTP/1.1 404 Not Found\r\n"},
{500, "HTTP/1.1 500 Internal Server Error\r\n"},
{501, "HTTP/1.1 501 Not Implemented\r\n"},
{502, "HTTP/1.1 502 Bad Gateway\r\n"},
{503, "HTTP/1.1 503 Service Unavailable\r\n"},
};
struct response
{
std::string body;