diff --git a/examples/server_connect/main.cpp b/examples/server_connect/main.cpp index e7ae3cb0..f4110a59 100644 --- a/examples/server_connect/main.cpp +++ b/examples/server_connect/main.cpp @@ -4,6 +4,22 @@ 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; @@ -14,4 +30,12 @@ int main(void) 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(); } diff --git a/include/transport/transport.h b/include/transport/transport.h index d14a0040..133ae54b 100644 --- a/include/transport/transport.h +++ b/include/transport/transport.h @@ -48,9 +48,12 @@ namespace Transport { // Connect to server void connect(); - - Swift::Component *getComponent() { return m_component; } - + + boost::signal onConnectionError; + boost::signal onConnected; + boost::signal onXMLOut; + boost::signal onXMLIn; + private: void handleConnected(); void handleConnectionError(const Swift::ComponentError &error); @@ -59,9 +62,9 @@ namespace Transport { // 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 info, const boost::optional& error, const Swift::JID& jid); // void handleCapsChanged(const Swift::JID& jid); diff --git a/src/transport.cpp b/src/transport.cpp index a7d012f8..dc7ea025 100644 --- a/src/transport.cpp +++ b/src/transport.cpp @@ -46,8 +46,8 @@ Transport::Transport(Swift::EventLoop *loop, Config::Variables &config) { 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)); @@ -84,17 +84,24 @@ void Transport::connect() { } 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()); +} + }