Changeset - 737aa148dada
[Not reviewed]
0 4 0
Jan Kaluza - 9 years ago 2016-01-18 13:19:18
jkaluza@redhat.com
Slack: Stop sending pings when disconnected from RTM
4 files changed with 15 insertions and 1 deletions:
0 comments (0 inline, 0 general)
include/transport/WebSocketClient.h
Show inline comments
 
@@ -61,6 +61,7 @@ class WebSocketClient {
 
		boost::signal<void (const std::string &payload)> onPayloadReceived;
 

	
 
		boost::signal<void ()> onWebSocketConnected;
 
		boost::signal<void (const boost::optional<Swift::Connection::Error> &error)> onWebSocketDisconnected;
 

	
 
	private:
 
		void handleDNSResult(const std::vector<Swift::HostAddress>&, boost::optional<Swift::DomainNameResolveError>);
libtransport/WebSocketClient.cpp
Show inline comments
 
@@ -218,6 +218,7 @@ void WebSocketClient::handleDisconnected(const boost::optional<Swift::Connection
 
	}
 

	
 
	LOG4CXX_ERROR(logger, "Disconected from " << m_host << ". Will reconnect in 1 second.");
 
	onWebSocketDisconnected(error);
 
	m_reconnectTimer->start();
 
}
 

	
spectrum/src/frontends/slack/SlackRTM.cpp
Show inline comments
 
@@ -42,6 +42,7 @@ SlackRTM::SlackRTM(Component *component, StorageBackend *storageBackend, UserInf
 
	m_component = component;
 
	m_storageBackend = storageBackend;
 
	m_counter = 0;
 
	m_started = false;
 
	m_client = new WebSocketClient(component);
 
	m_client->onPayloadReceived.connect(boost::bind(&SlackRTM::handlePayloadReceived, this, _1));
 
	m_client->onWebSocketConnected.connect(boost::bind(&SlackRTM::handleWebSocketConnected, this));
 
@@ -192,11 +193,19 @@ void SlackRTM::handleRTMStart(HTTPRequest *req, bool ok, rapidjson::Document &re
 
	LOG4CXX_INFO(logger, data);
 

	
 
	m_client->connectServer(u);
 
	m_pingTimer->start();
 
}
 

	
 
void SlackRTM::handleWebSocketConnected() {
 
	if (!m_started) {
 
		onRTMStarted();
 
		m_started = true;
 
	}
 

	
 
	m_pingTimer->start();
 
}
 

	
 
void SlackRTM::handleWebSocketDisconnected(const boost::optional<Swift::Connection::Error> &error) {
 
	m_pingTimer->stop();
 
}
 

	
 

	
spectrum/src/frontends/slack/SlackRTM.h
Show inline comments
 
@@ -32,6 +32,7 @@
 
#include <Swiften/Network/DomainNameAddressQuery.h>
 
#include <Swiften/Network/DomainNameResolver.h>
 
#include <Swiften/Network/HostAddress.h>
 
#include <Swiften/Network/Connection.h>
 
#include <Swiften/Base/SafeByteArray.h>
 
#include "Swiften/Network/Timer.h"
 
#include "Swiften/Version.h"
 
@@ -92,6 +93,7 @@ class SlackRTM {
 
		void handlePayloadReceived(const std::string &payload);
 
		void handleRTMStart(HTTPRequest *req, bool ok, rapidjson::Document &resp, const std::string &data);
 
		void handleWebSocketConnected();
 
		void handleWebSocketDisconnected(const boost::optional<Swift::Connection::Error> &error);
 

	
 
	private:
 
		std::map<std::string, SlackChannelInfo> m_channels;
 
@@ -108,6 +110,7 @@ class SlackRTM {
 
		unsigned long m_counter;
 
		Swift::Timer::ref m_pingTimer;
 
		SlackAPI *m_api;
 
		bool m_started;
 
};
 

	
 
}
0 comments (0 inline, 0 general)