Transport class signals

This commit is contained in:
Jan Kaluza 2011-02-10 14:02:40 +01:00
parent e678a46286
commit 99aff92566
3 changed files with 45 additions and 11 deletions

View file

@ -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();
}

View file

@ -48,9 +48,12 @@ namespace 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);
@ -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<Swift::DiscoInfo> info, const boost::optional<Swift::ErrorPayload>& error, const Swift::JID& jid);
// void handleCapsChanged(const Swift::JID& jid);

View file

@ -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());
}
}