summaryrefslogtreecommitdiffstats
blob: 27c7e239f456beb7c7cfbe2e7181cfce9123630a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/*
 * Copyright (c) 2010-2016 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/Client/ClientXMLTracer.h>
#include <Swiften/EventLoop/EventLoop.h>
#include <Swiften/EventLoop/SimpleEventLoop.h>
#include <Swiften/Network/BoostIOServiceThread.h>
#include <Swiften/Network/BoostTimer.h>
#include <Swiften/Network/MainBoostIOServiceThread.h>
#include <Swiften/Roster/GetRosterRequest.h>

using namespace Swift;

using namespace Swift;

bool connecting_ = false;
Client* client_;
SimpleEventLoop eventLoop_;
int count = 0;

void handleTick(std::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;
    std::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(std::shared_ptr<BoostTimer>());
    eventLoop_.run();

    delete client_;
    return 0;

}