blob: 6b4cbc4e0c48ee922a9fb7623060ed32dbc609cb (
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
|
/*
* 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;
/**
* 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]);
String password = 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);
}
}
|