diff --git a/src/main/java/com/github/manevolent/ts3j/event/ConnectedEvent.java b/src/main/java/com/github/manevolent/ts3j/event/ConnectedEvent.java new file mode 100644 index 0000000..dfcd9c1 --- /dev/null +++ b/src/main/java/com/github/manevolent/ts3j/event/ConnectedEvent.java @@ -0,0 +1,14 @@ +package com.github.manevolent.ts3j.event; + +import java.util.Map; + +public class ConnectedEvent extends BaseEvent { + public ConnectedEvent(Map map) { + super(map); + } + + @Override + public void fire(TS3Listener listener) { + listener.onConnected(this); + } +} diff --git a/src/main/java/com/github/manevolent/ts3j/event/TS3Listener.java b/src/main/java/com/github/manevolent/ts3j/event/TS3Listener.java index 4fab21d..6c3735f 100644 --- a/src/main/java/com/github/manevolent/ts3j/event/TS3Listener.java +++ b/src/main/java/com/github/manevolent/ts3j/event/TS3Listener.java @@ -53,4 +53,5 @@ public interface TS3Listener { default void onClientPoke(ClientPokeEvent e) {} default void onClientComposing(ClientChatComposingEvent e) {} default void onPermissionList(PermissionListEvent e) {} + default void onConnected(ConnectedEvent e) {} } diff --git a/src/main/java/com/github/manevolent/ts3j/protocol/packet/handler/client/LocalClientHandlerConnected.java b/src/main/java/com/github/manevolent/ts3j/protocol/packet/handler/client/LocalClientHandlerConnected.java index 1febd3a..26829be 100644 --- a/src/main/java/com/github/manevolent/ts3j/protocol/packet/handler/client/LocalClientHandlerConnected.java +++ b/src/main/java/com/github/manevolent/ts3j/protocol/packet/handler/client/LocalClientHandlerConnected.java @@ -2,8 +2,16 @@ package com.github.manevolent.ts3j.protocol.packet.handler.client; import com.github.manevolent.ts3j.protocol.socket.client.LocalTeamspeakClientSocket; +import java.io.IOException; +import java.util.concurrent.TimeoutException; + public class LocalClientHandlerConnected extends LocalClientHandlerFull { public LocalClientHandlerConnected(LocalTeamspeakClientSocket client) { super(client); } + + @Override + public void onAssigned() throws IOException, TimeoutException { + + } } diff --git a/src/main/java/com/github/manevolent/ts3j/protocol/socket/client/AbstractTeamspeakClientSocket.java b/src/main/java/com/github/manevolent/ts3j/protocol/socket/client/AbstractTeamspeakClientSocket.java index 020e1d8..b11112a 100644 --- a/src/main/java/com/github/manevolent/ts3j/protocol/socket/client/AbstractTeamspeakClientSocket.java +++ b/src/main/java/com/github/manevolent/ts3j/protocol/socket/client/AbstractTeamspeakClientSocket.java @@ -188,6 +188,8 @@ public abstract class AbstractTeamspeakClientSocket if (state == ClientConnectionState.DISCONNECTED && !initialState) onDisconnect(); + else if (state == ClientConnectionState.CONNECTED && !initialState) + onConnect(); Ts3Debugging.debug("State changed: " + state.name()); } @@ -214,6 +216,10 @@ public abstract class AbstractTeamspeakClientSocket } } + protected void onConnect() { + + } + protected void onDisconnect() { clientId = -1; diff --git a/src/main/java/com/github/manevolent/ts3j/protocol/socket/client/LocalTeamspeakClientSocket.java b/src/main/java/com/github/manevolent/ts3j/protocol/socket/client/LocalTeamspeakClientSocket.java index 95aaf08..5ef448b 100644 --- a/src/main/java/com/github/manevolent/ts3j/protocol/socket/client/LocalTeamspeakClientSocket.java +++ b/src/main/java/com/github/manevolent/ts3j/protocol/socket/client/LocalTeamspeakClientSocket.java @@ -70,8 +70,8 @@ public class LocalTeamspeakClientSocket @Override public void process(AbstractTeamspeakClientSocket client, SingleCommand singleCommand) throws CommandProcessException { - ChannelListEvent channelListEvent = new ChannelListEvent(singleCommand.toMap()); - for (TS3Listener listener : listeners) listener.onChannelList(channelListEvent); + final ChannelListEvent channelListEvent = new ChannelListEvent(singleCommand.toMap()); + commandExecutionService.submit(() -> listeners.forEach(e -> e.onChannelList(channelListEvent))); } }); @@ -273,6 +273,14 @@ public class LocalTeamspeakClientSocket super.setIdentity(identity); } + @Override + protected void onConnect() { + super.onConnect(); + + final ConnectedEvent connectedEvent = new ConnectedEvent(Collections.emptyMap()); + commandExecutionService.submit(() -> listeners.forEach(e -> e.onConnected(connectedEvent))); + } + @Override protected void onDisconnect() { super.onDisconnect();