diff --git a/src/main/java/me/mrletsplay/shareclientcore/connection/DisconnectListener.java b/src/main/java/me/mrletsplay/shareclientcore/connection/DisconnectListener.java new file mode 100644 index 0000000..f22f0e7 --- /dev/null +++ b/src/main/java/me/mrletsplay/shareclientcore/connection/DisconnectListener.java @@ -0,0 +1,7 @@ +package me.mrletsplay.shareclientcore.connection; + +public interface DisconnectListener { + + public void onDisconnect(String reason, boolean remote); + +} diff --git a/src/main/java/me/mrletsplay/shareclientcore/connection/DummyConnection.java b/src/main/java/me/mrletsplay/shareclientcore/connection/DummyConnection.java index bb44f3e..4bb0a87 100644 --- a/src/main/java/me/mrletsplay/shareclientcore/connection/DummyConnection.java +++ b/src/main/java/me/mrletsplay/shareclientcore/connection/DummyConnection.java @@ -34,4 +34,9 @@ public class DummyConnection implements RemoteConnection { } + @Override + public void setDisconnectListener(DisconnectListener listener) { + + } + } diff --git a/src/main/java/me/mrletsplay/shareclientcore/connection/RemoteConnection.java b/src/main/java/me/mrletsplay/shareclientcore/connection/RemoteConnection.java index 7005e0e..4290161 100644 --- a/src/main/java/me/mrletsplay/shareclientcore/connection/RemoteConnection.java +++ b/src/main/java/me/mrletsplay/shareclientcore/connection/RemoteConnection.java @@ -21,4 +21,6 @@ public interface RemoteConnection { public void removeListener(MessageListener listener); + public void setDisconnectListener(DisconnectListener listener); + } diff --git a/src/main/java/me/mrletsplay/shareclientcore/connection/WebSocketConnection.java b/src/main/java/me/mrletsplay/shareclientcore/connection/WebSocketConnection.java index 34b9570..bb7b746 100644 --- a/src/main/java/me/mrletsplay/shareclientcore/connection/WebSocketConnection.java +++ b/src/main/java/me/mrletsplay/shareclientcore/connection/WebSocketConnection.java @@ -23,6 +23,7 @@ public class WebSocketConnection implements RemoteConnection { private WSClient client; private String username; private Set listeners; + private DisconnectListener disconnectListener; private int siteID; private Object wait = new Object(); @@ -90,6 +91,11 @@ public class WebSocketConnection implements RemoteConnection { listeners.remove(listener); } + @Override + public void setDisconnectListener(DisconnectListener listener) { + this.disconnectListener = listener; + } + private class WSClient extends WebSocketClient { public WSClient(URI serverUri) { @@ -138,7 +144,7 @@ public class WebSocketConnection implements RemoteConnection { @Override public void onClose(int code, String reason, boolean remote) { - // TODO: handle + if(disconnectListener != null) disconnectListener.onDisconnect("WebSocket disconnected (" + code + "): " + reason, remote); } @Override diff --git a/src/main/java/me/mrletsplay/shareclientcore/document/Char.java b/src/main/java/me/mrletsplay/shareclientcore/document/Char.java index a53419c..48314c0 100644 --- a/src/main/java/me/mrletsplay/shareclientcore/document/Char.java +++ b/src/main/java/me/mrletsplay/shareclientcore/document/Char.java @@ -57,4 +57,9 @@ public record Char(Identifier[] position, int lamport, char value) implements Se return new Char(pos, lamport, value); } + @Override + public String toString() { + return "Char [position=" + Arrays.toString(position) + ", lamport=" + lamport + ", value=" + value + "]"; + } + }