std::cout << "Received request for: " << request->getPath() << std::endl;
icn_publishers_[request_id] = publisher;
icn_publishers_[request_id]->attachPublisher();
- icn_publishers_[request_id]->setTimeout(5);
+ if (request->getPath().substr(request->getPath().find_last_of(".") + 1) == "mpd") {
+ icn_publishers_[request_id]->setTimeout(1);
+ } else {
+ icn_publishers_[request_id]->setTimeout(5);
+ }
std::cout << "Starting new thread" << std::endl;
io_service_.dispatch([this, request, request_id]() {
find_resource(nullptr, request);
this->publisher_->publishContent(boost::asio::buffer_cast<const uint8_t *>(this->streambuf_.data()),
buffer_size,
+ this->response_lifetime_,
this->response_id_,
this->is_last_);
#include "common.h"
#include "response.h"
+#define DEFAULT_LIFETIME 1024 * 1024
+
namespace icn_httpserver {
Response::Response()
- : std::ostream(&streambuf_), is_last_(false) {
+ : std::ostream(&streambuf_),
+ is_last_(false),
+ response_length_(0),
+ response_lifetime_(DEFAULT_LIFETIME) {
}
Response::~Response() {
Response::is_last_ = is_last;
}
+const std::chrono::milliseconds &Response::getResponseLifetime() const {
+ return response_lifetime_;
+}
+void Response::setResponseLifetime(const std::chrono::milliseconds &response_lifetime) {
+ Response::response_lifetime_ = response_lifetime_;
+}
+
void Response::setResponseLength(std::size_t length) {
response_length_ = length;
}
void setResponseLength(std::size_t length);
+ const std::chrono::milliseconds &getResponseLifetime() const;
+
+ void setResponseLifetime(const std::chrono::milliseconds &response_lifetime);
+
+
protected:
boost::asio::streambuf streambuf_;
bool is_last_;
std::size_t response_length_;
+ std::chrono::milliseconds response_lifetime_;
};
} // end namespace icn_httpserver
}
void usage(const char *programName) {
- cerr << programName << " [-p PATH_TO_ROOT_FOOT_FOLDER] [-l WEBSERVER_PREFIX] [-x PROXY_ADDRESS]\n"
+ cerr << programName << " [-p PATH_TO_ROOT_FOOT_FOLDER] [-o TCP_LISTEN_PORT] [-l WEBSERVER_PREFIX] [-x PROXY_ADDRESS]\n"
<< "Web server able to publish content and generate http responses over TCP/ICN\n" << endl;
exit(1);
*response << "HTTP/1.0 200 OK\r\nContent-Length: " << length << "\r\n\r\n";
}
+ if (path.extension().string() == ".mpd") {
+ response->setResponseLifetime(std::chrono::milliseconds(1000));
+ }
+
default_resource_send(server, response, ifs, buffer, length);
return;