Files
@ 00c5273fbb13
Branch filter:
Location: libtransport.git/libtransport/HTTPRequestQueue.cpp - annotation
00c5273fbb13
1.5 KiB
text/x-c++hdr
Slack: Handle channels starting with hash, do not reconnect to Slack RTM when URL expired
5adb3d1f9733 5adb3d1f9733 26a01b8efa0a 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 eb8f7ddad957 5adb3d1f9733 83ba9855b521 eb8f7ddad957 26a01b8efa0a 26a01b8efa0a 26a01b8efa0a 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 26a01b8efa0a 83ba9855b521 83ba9855b521 83ba9855b521 83ba9855b521 26a01b8efa0a 26a01b8efa0a 26a01b8efa0a a025aa108559 26a01b8efa0a 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 eb8f7ddad957 83ba9855b521 26a01b8efa0a 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 83ba9855b521 eb8f7ddad957 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 83ba9855b521 5adb3d1f9733 eb8f7ddad957 eb8f7ddad957 83ba9855b521 83ba9855b521 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 83ba9855b521 5adb3d1f9733 5adb3d1f9733 eb8f7ddad957 eb8f7ddad957 eb8f7ddad957 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 5adb3d1f9733 | #include "transport/HTTPRequestQueue.h"
#include "transport/HTTPRequest.h"
#include "transport/Transport.h"
namespace Transport {
DEFINE_LOGGER(logger, "HTTPRequestQueue")
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));
}
HTTPRequestQueue::~HTTPRequestQueue() {
m_queueTimer->stop();
if (m_req) {
m_req->onRequestFinished.disconnect(boost::bind(&HTTPRequestQueue::handleRequestFinished, this));
}
}
void HTTPRequestQueue::handleRequestFinished() {
m_req = NULL;
m_queueTimer->start();
}
void HTTPRequestQueue::sendNextRequest() {
if (m_queue.empty()) {
LOG4CXX_INFO(logger, m_user << ": Queue is empty.");
m_req = NULL;
m_queueTimer->stop();
return;
}
if (m_req) {
LOG4CXX_INFO(logger, m_user << ": There is already a request being handled.");
return;
}
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();
}
void HTTPRequestQueue::queueRequest(HTTPRequest *req) {
m_queue.push(req);
if (!m_req) {
sendNextRequest();
}
else {
LOG4CXX_INFO(logger, m_user << ": Request '" << req->getURL() << "' queued.");
}
}
}
|