From aaceb30bd2bfea0686a39c9d6f58cb9d4595fdd9 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Sun, 11 Jun 2017 23:21:42 +0300 Subject: [PATCH] =?UTF-8?q?MCSM:=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=BE=D1=82=D0=BE=D0=BA?= =?UTF-8?q?=D0=BE=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mcserver-manager/build.gradle | 2 +- .../src/main/java/asys/mcsmanager/Linker.java | 15 +++++++++++---- .../mcsmanager/server/ServerPacketHandler.java | 3 ++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/mcserver-manager/build.gradle b/mcserver-manager/build.gradle index d7c4fed..baef3c0 100644 --- a/mcserver-manager/build.gradle +++ b/mcserver-manager/build.gradle @@ -1,5 +1,5 @@ group = 'asys' -version = '0.10-SNAPSHOT' +version = '0.10.1-SNAPSHOT' apply plugin: 'osgi' diff --git a/mcserver-manager/src/main/java/asys/mcsmanager/Linker.java b/mcserver-manager/src/main/java/asys/mcsmanager/Linker.java index 94be514..ddaa960 100644 --- a/mcserver-manager/src/main/java/asys/mcsmanager/Linker.java +++ b/mcserver-manager/src/main/java/asys/mcsmanager/Linker.java @@ -6,6 +6,7 @@ package asys.mcsmanager; import asys.mcsmanager.packets.CS_ConsoleMessage; import asys.mcsmanager.packets.SC_Command; +import asys.mcsmanager.packets.SC_ToggleSendMessages; import io.netty.channel.Channel; import io.netty.handler.codec.http.websocketx.TextWebSocketFrame; @@ -48,13 +49,19 @@ public class Linker { } public void addWebconsoleListener(String serverName, Channel channel) { - this.webconsoleListeners - .computeIfAbsent(serverName, v -> new ArrayList<>()) - .add(channel); + List channels = this.webconsoleListeners.computeIfAbsent(serverName, v -> new ArrayList<>()); + if (channels.size() == 0) { + this.serverMap.get(serverName).getChannel().writeAndFlush(new SC_ToggleSendMessages(true)); + } + channels.add(channel); } public void removeWebconsoleListener(String serverName, Channel channel) { - this.webconsoleListeners.get(serverName).remove(channel); + List channels = this.webconsoleListeners.get(serverName); + channels.remove(channel); + if (channels.size() == 0) { + this.serverMap.get(serverName).getChannel().writeAndFlush(new SC_ToggleSendMessages(false)); + } } public void broadcastConsoleMessage(String serverName, CS_ConsoleMessage packet) { diff --git a/mcserver-manager/src/main/java/asys/mcsmanager/server/ServerPacketHandler.java b/mcserver-manager/src/main/java/asys/mcsmanager/server/ServerPacketHandler.java index eee34e8..f171b08 100644 --- a/mcserver-manager/src/main/java/asys/mcsmanager/server/ServerPacketHandler.java +++ b/mcserver-manager/src/main/java/asys/mcsmanager/server/ServerPacketHandler.java @@ -28,7 +28,8 @@ class ServerPacketHandler extends ChannelInboundHandlerAdapter implements IPacke private static final BiMap> knownPackets = ImmutableBiMap.of( 3, CS_Ping.class, 4, CS_ConsoleMessage.class, - 5, SC_Command.class + 5, SC_Command.class, + 6, SC_ToggleSendMessages.class ); private static Map, IPacketHandler> pingHandlers;