From bfa7d3d26faaa2db2580d6d7a9388beb71a53c7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Remko=20Tron=C3=A7on?= Date: Sun, 19 Jul 2009 17:58:27 +0200 Subject: Add session tracing. diff --git a/Nim/main.cpp b/Nim/main.cpp index 2fd5b21..2522a13 100644 --- a/Nim/main.cpp +++ b/Nim/main.cpp @@ -2,6 +2,7 @@ #include #include +#include "Swiften/Session/SessionTracer.h" #include "Swiften/Network/BoostConnectionFactory.h" #include "Swiften/Elements/IQ.h" #include "Swiften/Elements/Presence.h" @@ -86,6 +87,7 @@ class Server { serverFromClientSession_ = boost::shared_ptr(new ServerFromClientSession(idGenerator_.generateID(), c, &payloadParserFactories_, &payloadSerializers_, &userRegistry_)); serverFromClientSession_->onElementReceived.connect(boost::bind(&Server::handleElementReceived, this, _1, serverFromClientSession_)); serverFromClientSession_->onSessionFinished.connect(boost::bind(&Server::handleSessionFinished, this, serverFromClientSession_)); + tracers_.push_back(boost::shared_ptr(new SessionTracer(serverFromClientSession_))); serverFromClientSession_->startSession(); } @@ -243,6 +245,7 @@ class Server { session->onSessionFinished.connect(boost::bind(&Server::handleLinkLocalSessionFinished, this, session)); session->onElementReceived.connect(boost::bind(&Server::handleLinkLocalElementReceived, this, _1, session)); linkLocalSessions_.push_back(session); + tracers_.push_back(boost::shared_ptr(new SessionTracer(session))); session->startSession(); } @@ -313,6 +316,7 @@ class Server { boost::shared_ptr serverFromClientConnectionServer_; boost::shared_ptr serverFromClientSession_; boost::shared_ptr serverFromNetworkConnectionServer_; + std::vector< boost::shared_ptr > tracers_; std::vector< boost::shared_ptr > linkLocalSessions_; std::vector< boost::shared_ptr > connectors_; FullPayloadParserFactoryCollection payloadParserFactories_; diff --git a/Swiften/Session/SessionTracer.h b/Swiften/Session/SessionTracer.h new file mode 100644 index 0000000..29a07e0 --- /dev/null +++ b/Swiften/Session/SessionTracer.h @@ -0,0 +1,29 @@ +#pragma once + +#include + +#include "Swiften/Session/Session.h" +#include "Swiften/Base/String.h" +#include "Swiften/Base/ByteArray.h" + +namespace Swift { + class SessionTracer { + public: + SessionTracer(boost::shared_ptr session) : session(session) { + session->onDataRead.connect(boost::bind(&SessionTracer::printData, this, '<', _1)); + session->onDataWritten.connect(boost::bind(&SessionTracer::printData, this, '>', _1)); + } + + private: + void printData(char direction, const ByteArray& data) { + std::cerr << direction << direction << " " << session->getLocalJID() << " "; + for (unsigned int i = 0; i < 72 - session->getLocalJID().toString().getLength() - session->getRemoteJID().toString().getLength(); ++i) { + std::cerr << direction; + } + std::cerr << " " << session->getRemoteJID()<< " " << direction << direction << std::endl; + std::cerr << String(data.getData(), data.getSize()) << std::endl; + } + + boost::shared_ptr session; + }; +} -- cgit v0.10.2-6-g49f6