Skip to content
This repository was archived by the owner on Jul 21, 2020. It is now read-only.

Commit 26ab72e

Browse files
committed
[Chat/Constellation] Added a custom disconnect event to trigger on disconnect time
1 parent 7b62fdd commit 26ab72e

File tree

8 files changed

+69
-0
lines changed

8 files changed

+69
-0
lines changed

src/main/java/com/mixer/api/resource/chat/AbstractChatEvent.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public static enum EventType {
2121
@SerializedName("Stats") STATS (StatusEvent.class),
2222
@SerializedName("UserJoin") USER_JOIN (UserJoinEvent.class),
2323
@SerializedName("UserLeave") USER_LEAVE (UserLeaveEvent.class),
24+
@SerializedName("disconnect") DISCOUNNECT (ChatDisconnectEvent.class),
2425
@SerializedName("WelcomeEvent") WELCOME (WelcomeEvent.class);
2526

2627
private final Class<? extends AbstractChatEvent> correspondingClass;
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.mixer.api.resource.chat.events;
2+
3+
import com.mixer.api.resource.chat.AbstractChatEvent;
4+
import com.mixer.api.resource.chat.events.data.ChatDisconnectData;
5+
6+
public class ChatDisconnectEvent extends AbstractChatEvent<ChatDisconnectData> {
7+
public ChatDisconnectEvent() {
8+
this.event = EventType.DISCOUNNECT;
9+
}
10+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.mixer.api.resource.chat.events.data;
2+
3+
import com.mixer.api.resource.chat.AbstractChatEvent;
4+
5+
public class ChatDisconnectData extends AbstractChatEvent.EventData {
6+
public int code;
7+
public String reason;
8+
public boolean remote;
9+
10+
public ChatDisconnectData(int code, String reason, boolean remote) {
11+
super();
12+
this.code = code;
13+
this.reason = reason;
14+
this.remote = remote;
15+
}
16+
}

src/main/java/com/mixer/api/resource/chat/ws/MixerChatConnection.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import com.google.common.collect.HashMultimap;
44
import com.google.common.collect.Maps;
55
import com.google.common.collect.Multimap;
6+
import com.google.gson.Gson;
7+
import com.google.gson.GsonBuilder;
68
import com.google.gson.JsonObject;
79
import com.google.gson.JsonParser;
810
import com.google.gson.JsonSyntaxException;

src/main/java/com/mixer/api/resource/constellation/AbstractConstellationEvent.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.mixer.api.resource.constellation;
22

33
import com.google.gson.annotations.SerializedName;
4+
import com.mixer.api.resource.constellation.events.ConstellationDisconnectEvent;
45
import com.mixer.api.resource.constellation.events.HelloEvent;
56
import com.mixer.api.resource.constellation.events.LiveEvent;
67

@@ -16,6 +17,7 @@ public static abstract class EventData {}
1617
public static enum EventType {
1718
@SerializedName("live") LIVE (LiveEvent.class),
1819
@SerializedName("hello") HELLO (HelloEvent.class),
20+
@SerializedName("disconnect") DISCOUNNECT (ConstellationDisconnectEvent.class);
1921

2022
private final Class<? extends AbstractConstellationEvent> correspondingClass;
2123

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.mixer.api.resource.constellation.events;
2+
3+
import com.mixer.api.resource.constellation.AbstractConstellationEvent;
4+
import com.mixer.api.resource.constellation.events.data.ConstellationDisconnectData;
5+
6+
public class ConstellationDisconnectEvent extends AbstractConstellationEvent<ConstellationDisconnectData> {
7+
public ConstellationDisconnectEvent() {
8+
this.type = Type.EVENT;
9+
}
10+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.mixer.api.resource.constellation.events.data;
2+
3+
import com.mixer.api.resource.constellation.AbstractConstellationEvent;
4+
5+
public class ConstellationDisconnectData extends AbstractConstellationEvent.EventData {
6+
public int code;
7+
public String reason;
8+
public boolean remote;
9+
public ConstellationDisconnectData(int code, String reason, boolean remote) {
10+
super();
11+
this.code = code;
12+
this.reason = reason;
13+
this.remote = remote;
14+
}
15+
}

src/main/java/com/mixer/api/resource/constellation/ws/MixerConstellationConnection.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import com.google.common.collect.HashMultimap;
44
import com.google.common.collect.Maps;
55
import com.google.common.collect.Multimap;
6+
import com.google.gson.Gson;
7+
import com.google.gson.GsonBuilder;
68
import com.google.gson.JsonObject;
79
import com.google.gson.JsonParser;
810
import com.google.gson.JsonSyntaxException;
@@ -122,6 +124,17 @@ public void onMessage(String s) {
122124
}
123125

124126
@Override public void onClose(int i, String s, boolean b) {
127+
Class<? extends AbstractConstellationEvent> type = AbstractConstellationEvent.EventType
128+
.fromSerializedName("disconnect").getCorrespondingClass();
129+
Gson gson = null;
130+
gson = new GsonBuilder().create();
131+
JsonObject obj = new JsonObject();
132+
obj.addProperty("code", i);
133+
obj.addProperty("reason", s);
134+
obj.addProperty("remote", b);
135+
JsonObject json = new JsonObject();
136+
json.add("data", obj);
137+
this.dispatchEvent(this.mixer.gson.fromJson(json, type));
125138
this.producer.notifyClose(i, s, b);
126139
}
127140

0 commit comments

Comments
 (0)