-
Notifications
You must be signed in to change notification settings - Fork 32
Expand file tree
/
Copy pathStubHandler.java
More file actions
82 lines (67 loc) · 2.24 KB
/
StubHandler.java
File metadata and controls
82 lines (67 loc) · 2.24 KB
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
package com.github.eventsource.client.stubs;
import com.github.eventsource.client.EventSourceHandler;
import com.github.eventsource.client.MessageEvent;
import com.github.eventsource.client.impl.ConnectionHandler;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class StubHandler implements ConnectionHandler, EventSourceHandler {
private Long reconnectionTimeMillis;
private String lastEventId;
private boolean connected;
private Map<String, List<MessageEvent>> messagesByEvent = new HashMap<String, List<MessageEvent>>();
private List<Throwable> errors = new ArrayList<Throwable>();
@Override
public void setReconnectionTimeMillis(long reconnectionTimeMillis) {
this.reconnectionTimeMillis = reconnectionTimeMillis;
}
@Override
public void setLastEventId(String lastEventId) {
this.lastEventId = lastEventId;
}
@Override
public void onConnect() throws Exception {
connected = true;
}
@Override
public void onClosed(boolean willReconnect){
connected = false;
}
@Override
public void onMessage(String event, MessageEvent message) throws Exception {
getMessageEvents(event).add(message);
}
@Override
public void onError(Throwable t) {
errors.add(t);
}
public Long getReconnectionTimeMillis() {
return reconnectionTimeMillis;
}
public String getLastEventId() {
return lastEventId;
}
public boolean isConnected() {
return connected;
}
public List<MessageEvent> getMessageEvents(String event) {
List<MessageEvent> events = messagesByEvent.get(event);
if(events == null) {
events = new ArrayList<MessageEvent>();
messagesByEvent.put(event, events);
}
return events;
}
public List<MessageEvent> getMessageEvents() {
List<MessageEvent> results = new ArrayList<MessageEvent>();
for (Entry<String, List<MessageEvent>> messageEvents : messagesByEvent.entrySet()) {
results.addAll(messageEvents.getValue());
}
return results;
}
public List<Throwable> getErrors() {
return errors;
}
}