/*
* Copyright (c) 2010 Isode Limited.
* All rights reserved.
* See the COPYING file for more information.
*/
#include <boost/bind.hpp>
#include <boost/thread.hpp>
#include <Swiften/Client/Client.h>
#include <Swiften/Network/BoostTimer.h>
#include <Swiften/EventLoop/EventLoop.h>
#include <Swiften/EventLoop/SimpleEventLoop.h>
#include <Swiften/Roster/GetRosterRequest.h>
#include <Swiften/Client/ClientXMLTracer.h>
#include <Swiften/Network/BoostIOServiceThread.h>
#include <Swiften/Network/MainBoostIOServiceThread.h>
using namespace Swift;
using namespace Swift;
bool connecting_ = false;
Client* client_;
SimpleEventLoop eventLoop_;
int count = 0;
void handleTick(boost::shared_ptr<BoostTimer> timer) {
std::cout << "Count " << count++ << std::endl;
if (timer) {
timer->stop();
}
if (connecting_) {
client_->disconnect();
} else {
if (count > 60) {
eventLoop_.stop();
return;
}
client_->connect();
}
connecting_ = !connecting_;
int delay = 500;
// int delay = 0;
boost::shared_ptr<BoostTimer> newTimer(BoostTimer::create(delay, &MainBoostIOServiceThread::getInstance().getIOService()));
newTimer->onTick.connect(boost::bind(&handleTick, timer));
newTimer->start();
}
int main(int, char**) {
char* jidChars = getenv("SWIFT_CLIENTTEST_JID");
if (!jidChars) {
std::cerr << "Please set the SWIFT_CLIENTTEST_JID environment variable" << std::endl;
return -1;
}
char* passChars = getenv("SWIFT_CLIENTTEST_PASS");
if (!passChars) {
std::cerr << "Please set the SWIFT_CLIENTTEST_PASS environment variable" << std::endl;
return -1;
}
JID jid(jidChars);
std::string pass(passChars);
client_ = new Swift::Client(jid, pass);
handleTick(boost::shared_ptr<BoostTimer>());
eventLoop_.run();
delete client_;
return 0;
}