Changeset - 99aff9256622
[Not reviewed]
0 3 0
Jan Kaluza - 14 years ago 2011-02-10 14:02:40
hanzz.k@gmail.com
Transport class signals
3 files changed with 45 insertions and 11 deletions:
0 comments (0 inline, 0 general)
examples/server_connect/main.cpp
Show inline comments
 
#include "transport/config.h"
 
#include "transport/transport.h"
 
#include "Swiften/EventLoop/SimpleEventLoop.h"
 
 
using namespace Transport;
 
 
static void onConnected() {
 
	std::cout << "Connected to Jabber Server!\n";
 
}
 
 
static void onConnectionError(const Swift::ComponentError&) {
 
	std::cout << "Connection Error!\n";
 
}
 
 
static void onXMLIn(const std::string &data) {
 
	std::cout << "[XML IN]" << data << "\n";
 
}
 
 
static void onXMLOut(const std::string &data) {
 
	std::cout << "[XML OUT]" << data << "\n";
 
}
 
 
int main(void)
 
{
 
	Config::Variables config;
 
	if (!Config::load("sample.cfg", config)) {
 
		std::cout << "Can't open sample.cfg configuration file.\n";
 
		return 1;
 
	}
 
 
	Swift::SimpleEventLoop eventLoop;
 
	Transport::Transport transport(&eventLoop, config);
 
 
	transport.onConnected.connect(&onConnected);
 
	transport.onConnectionError.connect(bind(&onConnectionError, _1));
 
	transport.onXMLIn.connect(bind(&onXMLIn, _1));
 
	transport.onXMLOut.connect(bind(&onXMLOut, _1));
 
 
	transport.connect();
 
	eventLoop.run();
 
}
include/transport/transport.h
Show inline comments
 
@@ -45,26 +45,29 @@ namespace Transport {
 
		public:
 
			Transport(Swift::EventLoop *loop, Config::Variables &config);
 
			~Transport();
 

	
 
			// Connect to server
 
			void connect();
 
			
 
			Swift::Component *getComponent() { return m_component; }
 
		
 

	
 
			boost::signal<void (const Swift::ComponentError&)> onConnectionError;
 
			boost::signal<void ()> onConnected;
 
			boost::signal<void (const std::string &)> onXMLOut;
 
			boost::signal<void (const std::string &)> onXMLIn;
 

	
 
		private:
 
			void handleConnected();
 
			void handleConnectionError(const Swift::ComponentError &error);
 
// 			void handlePresenceReceived(Swift::Presence::ref presence);
 
// 			void handleMessageReceived(Swift::Message::ref message);
 
// 			void handlePresence(Swift::Presence::ref presence);
 
// 			void handleSubscription(Swift::Presence::ref presence);
 
// 			void handleProbePresence(Swift::Presence::ref presence);
 
// 			void handleDataRead(const Swift::String &data);
 
// 			void handleDataWritten(const Swift::String &data);
 
// 			
 
			void handleDataRead(const Swift::String &data);
 
			void handleDataWritten(const Swift::String &data);
 

	
 
// 			void handleDiscoInfoResponse(boost::shared_ptr<Swift::DiscoInfo> info, const boost::optional<Swift::ErrorPayload>& error, const Swift::JID& jid);
 
// 			void handleCapsChanged(const Swift::JID& jid);
 

	
 
			Swift::BoostNetworkFactories *m_factories;
 
			Swift::Component *m_component;
 
			Swift::Timer::ref m_reconnectTimer;
src/transport.cpp
Show inline comments
 
@@ -43,14 +43,14 @@ Transport::Transport(Swift::EventLoop *loop, Config::Variables &config) {
 
	m_reconnectTimer->onTick.connect(bind(&Transport::connect, this)); 
 

	
 
	m_component = new Component(loop, m_factories, m_jid, m_config["service.password"].as<std::string>());
 
	m_component->setSoftwareVersion("", "");
 
	m_component->onConnected.connect(bind(&Transport::handleConnected, this));
 
	m_component->onError.connect(bind(&Transport::handleConnectionError, this, _1));
 
// 	m_component->onDataRead.connect(bind(&Transport::handleDataRead, this, _1));
 
// 	m_component->onDataWritten.connect(bind(&Transport::handleDataWritten, this, _1));
 
	m_component->onDataRead.connect(bind(&Transport::handleDataRead, this, _1));
 
	m_component->onDataWritten.connect(bind(&Transport::handleDataWritten, this, _1));
 
// 	m_component->onPresenceReceived.connect(bind(&Transport::handlePresenceReceived, this, _1));
 
// 	m_component->onMessageReceived.connect(bind(&Transport::handleMessageReceived, this, _1));
 

	
 
	m_capsMemoryStorage = new CapsMemoryStorage();
 
	m_capsManager = new CapsManager(m_capsMemoryStorage, m_component->getStanzaChannel(), m_component->getIQRouter());
 
	m_entityCapsManager = new EntityCapsManager(m_capsManager, m_component->getStanzaChannel());
 
@@ -81,20 +81,27 @@ void Transport::connect() {
 
	m_reconnectCount++;
 
	m_component->connect(m_config["service.server"].as<std::string>(), m_config["service.port"].as<int>());
 
	m_reconnectTimer->stop();
 
}
 

	
 
void Transport::handleConnected() {
 
	std::cout <<"Transport" << " CONNECTED!\n";
 
	onConnected();
 
	m_reconnectCount = 0;
 
}
 

	
 
void Transport::handleConnectionError(const ComponentError &error) {
 
	std::cout << "Transport" << " Disconnected from Jabber server!\n";
 

	
 
	onConnectionError(error);
 
// 	if (m_reconnectCount == 2)
 
// 		Transport::instance()->userManager()->removeAllUsers();
 

	
 
	m_reconnectTimer->start();
 
}
 

	
 
void Transport::handleDataRead(const String &data) {
 
	onXMLIn(data.getUTF8String());
 
}
 

	
 
void Transport::handleDataWritten(const String &data) {
 
	onXMLOut(data.getUTF8String());
 
}
 

	
 
}
0 comments (0 inline, 0 general)