Slack: Better HTTPRequests logging
This commit is contained in:
parent
f6949a020a
commit
eb8f7ddad9
4 changed files with 16 additions and 7 deletions
|
@ -39,6 +39,10 @@ class HTTPRequest : public Thread {
|
|||
void run();
|
||||
void finalize();
|
||||
|
||||
const std::string &getURL() {
|
||||
return m_url;
|
||||
}
|
||||
|
||||
boost::signal<void ()> onRequestFinished;
|
||||
|
||||
private:
|
||||
|
|
|
@ -18,7 +18,7 @@ class Component;
|
|||
|
||||
class HTTPRequestQueue {
|
||||
public:
|
||||
HTTPRequestQueue(Component *component, int delayBetweenRequests = 1);
|
||||
HTTPRequestQueue(Component *component, const std::string &user, int delayBetweenRequests = 1);
|
||||
|
||||
virtual ~HTTPRequestQueue();
|
||||
|
||||
|
@ -34,6 +34,7 @@ class HTTPRequestQueue {
|
|||
std::queue<HTTPRequest *> m_queue;
|
||||
HTTPRequest *m_req;
|
||||
Swift::Timer::ref m_queueTimer;
|
||||
std::string m_user;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -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() {
|
|||
|
||||
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() {
|
|||
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.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -71,7 +71,7 @@ DEFINE_LOGGER(logger, "SlackAPI");
|
|||
NAME = NAME##_tmp.GetString(); \
|
||||
}
|
||||
|
||||
SlackAPI::SlackAPI(Component *component, SlackIdManager *idManager, const std::string &token, const std::string &domain) : HTTPRequestQueue(component) {
|
||||
SlackAPI::SlackAPI(Component *component, SlackIdManager *idManager, const std::string &token, const std::string &domain) : HTTPRequestQueue(component, domain) {
|
||||
m_component = component;
|
||||
m_token = token;
|
||||
m_idManager = idManager;
|
||||
|
|
Loading…
Add table
Reference in a new issue