|
|
|
@ -6,9 +6,10 @@ namespace Transport {
@@ -6,9 +6,10 @@ namespace Transport {
|
|
|
|
|
|
|
|
|
|
DEFINE_LOGGER(logger, "HTTPRequestQueue") |
|
|
|
|
|
|
|
|
|
HTTPRequestQueue::HTTPRequestQueue(Component *component, int delay) { |
|
|
|
|
HTTPRequestQueue::HTTPRequestQueue(Component *component, const std::string &user, int delay) { |
|
|
|
|
m_delay = delay; |
|
|
|
|
m_req = NULL; |
|
|
|
|
m_user = user; |
|
|
|
|
|
|
|
|
|
m_queueTimer = component->getNetworkFactories()->getTimerFactory()->createTimer(500); |
|
|
|
|
m_queueTimer->onTick.connect(boost::bind(&HTTPRequestQueue::sendNextRequest, this)); |
|
|
|
@ -29,20 +30,21 @@ void HTTPRequestQueue::handleRequestFinished() {
@@ -29,20 +30,21 @@ void HTTPRequestQueue::handleRequestFinished() {
|
|
|
|
|
|
|
|
|
|
void HTTPRequestQueue::sendNextRequest() { |
|
|
|
|
if (m_queue.empty()) { |
|
|
|
|
LOG4CXX_INFO(logger, "queue is empty"); |
|
|
|
|
LOG4CXX_INFO(logger, m_user << ": Queue is empty."); |
|
|
|
|
m_req = NULL; |
|
|
|
|
m_queueTimer->stop(); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (m_req) { |
|
|
|
|
LOG4CXX_INFO(logger, "we are handling the request"); |
|
|
|
|
LOG4CXX_INFO(logger, m_user << ": There is already a request being handled."); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
LOG4CXX_INFO(logger, "Starting new request"); |
|
|
|
|
m_req = m_queue.front(); |
|
|
|
|
m_queue.pop(); |
|
|
|
|
|
|
|
|
|
LOG4CXX_INFO(logger, m_user << ": Starting request '" << m_req->getURL() << "'."); |
|
|
|
|
m_req->onRequestFinished.connect(boost::bind(&HTTPRequestQueue::handleRequestFinished, this)); |
|
|
|
|
m_req->execute(); |
|
|
|
|
} |
|
|
|
@ -50,10 +52,12 @@ void HTTPRequestQueue::sendNextRequest() {
@@ -50,10 +52,12 @@ void HTTPRequestQueue::sendNextRequest() {
|
|
|
|
|
void HTTPRequestQueue::queueRequest(HTTPRequest *req) { |
|
|
|
|
m_queue.push(req); |
|
|
|
|
|
|
|
|
|
LOG4CXX_INFO(logger, "request queued"); |
|
|
|
|
if (!m_req) { |
|
|
|
|
sendNextRequest(); |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
LOG4CXX_INFO(logger, m_user << ": Request '" << req->getURL() << "' queued."); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|