summaryrefslogtreecommitdiffstats
blob: 12b3c27e6b1eff85b6bf871d45a5c8383a153e99 (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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/*
 * Copyright (c) 2010, Isode Limited, London, England.
 * All rights reserved.
 */
package com.isode.stroke.examples;

import com.isode.stroke.client.ClientError;
import com.isode.stroke.client.ClientOptions;
import com.isode.stroke.client.CoreClient;
import com.isode.stroke.elements.Message;
import com.isode.stroke.eventloop.DummyEventLoop;
import com.isode.stroke.jid.JID;
import com.isode.stroke.network.JavaNetworkFactories;
import com.isode.stroke.signals.Slot;
import com.isode.stroke.signals.Slot1;
import com.isode.stroke.base.SafeByteArray;

/**
 * Simple example.
 * Connects,
 * disconnects,
 * connects,
 * sends a message,
 * receives the message,
 * logs out.
 * @author kismith
 */
public class ConnectDisconnect {

    private boolean running = true;
    private JID jid;
    int connectCount = 0;
    CoreClient client;
    ClientOptions options = new ClientOptions();

    private void handleConnected() {
        connectCount++;
        if (connectCount == 1) {
            System.out.println("First connection");
            client.disconnect();
        } else {
            System.out.println("Second connection");
            Message message = new Message();
            message.setTo(client.getJID());
            message.setBody("Ooh, a message");
            message.setID("BLAH");
            client.sendMessage(message);
        }
    }

    private void handleDisconnected(ClientError error) {
        if (connectCount == 1) {
            System.out.println("First disconnection");
            client.connect(options);
        } else {
            System.out.println("Last connection");
            running = false;
        }
    }

    private void handleMessageReceived(Message message) {
        if (connectCount == 2 && message.getID().equals("BLAH")) {
            System.out.println("Message received");
            client.disconnect();
        }
    }

    public void go(String args[]) {
        jid = new JID(args[0]);
        SafeByteArray password = new SafeByteArray(args[1]);
        DummyEventLoop eventLoop = new DummyEventLoop();
        JavaNetworkFactories factories = new JavaNetworkFactories(eventLoop);

        client = new CoreClient(jid, password, factories);
        client.onConnected.connect(new Slot() {

            public void call() {
                handleConnected();
            }
        });
        client.onDisconnected.connect(new Slot1<ClientError>() {

            public void call(ClientError p1) {
                handleDisconnected(p1);
            }
        });
        client.onMessageReceived.connect(new Slot1<Message>() {

            public void call(Message p1) {
                handleMessageReceived(p1);
            }
        });
        client.connect(options);
        while (running) {
            eventLoop.processEvents();
        }

    }

    public static void main(String args[]) {
        new ConnectDisconnect().go(args);
    }
}