mirror of
https://github.com/System-End/Discord-MC-Chat.git
synced 2026-04-19 19:45:14 +00:00
NetworkManager
This commit is contained in:
parent
cb2409ca95
commit
27ef4a3f7d
4 changed files with 85 additions and 1 deletions
|
|
@ -2,6 +2,7 @@ package com.xujiayao.discord_mc_chat;
|
|||
|
||||
import com.xujiayao.discord_mc_chat.client.ClientDMCC;
|
||||
import com.xujiayao.discord_mc_chat.commands.CommandManager;
|
||||
import com.xujiayao.discord_mc_chat.network.NetworkManager;
|
||||
import com.xujiayao.discord_mc_chat.server.ServerDMCC;
|
||||
import com.xujiayao.discord_mc_chat.utils.CryptUtils;
|
||||
import com.xujiayao.discord_mc_chat.utils.config.ConfigManager;
|
||||
|
|
@ -161,6 +162,9 @@ public class DMCC {
|
|||
public static boolean shutdown() {
|
||||
try (ExecutorService executor = Executors.newSingleThreadExecutor(r -> new Thread(r, "DMCC-Shutdown"))) {
|
||||
return executor.submit(() -> {
|
||||
// Clear the network manager references first
|
||||
NetworkManager.clear();
|
||||
|
||||
if (clientInstance != null) {
|
||||
clientInstance.shutdown();
|
||||
clientInstance = null;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.xujiayao.discord_mc_chat.client;
|
||||
|
||||
import com.xujiayao.discord_mc_chat.network.NetworkManager;
|
||||
import com.xujiayao.discord_mc_chat.network.packets.Packet;
|
||||
import com.xujiayao.discord_mc_chat.utils.i18n.I18nManager;
|
||||
|
||||
|
|
@ -32,7 +33,12 @@ public class ClientDMCC {
|
|||
try (ExecutorService executor = Executors.newSingleThreadExecutor(r -> new Thread(r, "DMCC-Client"))) {
|
||||
return executor.submit(() -> {
|
||||
nettyClient = new NettyClient(host, port, serverName, sharedSecret);
|
||||
return nettyClient.start();
|
||||
boolean success = nettyClient.start();
|
||||
if (success) {
|
||||
// Register to NetworkManager on successful start
|
||||
NetworkManager.registerClient(this);
|
||||
}
|
||||
return success;
|
||||
}).get();
|
||||
} catch (Exception e) {
|
||||
LOGGER.error(I18nManager.getDmccTranslation("client.startup_interrupted"), e);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,68 @@
|
|||
package com.xujiayao.discord_mc_chat.network;
|
||||
|
||||
import com.xujiayao.discord_mc_chat.client.ClientDMCC;
|
||||
import com.xujiayao.discord_mc_chat.network.packets.Packet;
|
||||
import com.xujiayao.discord_mc_chat.server.ServerDMCC;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
/**
|
||||
* Central access point for sending network packets.
|
||||
*
|
||||
* @author Xujiayao
|
||||
*/
|
||||
public class NetworkManager {
|
||||
|
||||
private static final AtomicReference<ClientDMCC> clientInstance = new AtomicReference<>();
|
||||
private static final AtomicReference<ServerDMCC> serverInstance = new AtomicReference<>();
|
||||
|
||||
public static void registerClient(ClientDMCC client) {
|
||||
clientInstance.set(client);
|
||||
}
|
||||
|
||||
public static void registerServer(ServerDMCC server) {
|
||||
serverInstance.set(server);
|
||||
}
|
||||
|
||||
public static void clear() {
|
||||
clientInstance.set(null);
|
||||
serverInstance.set(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends a packet to the server. Should be called from client only.
|
||||
*
|
||||
* @param packet The packet to send
|
||||
*/
|
||||
public static void sendPacketToServer(Packet packet) {
|
||||
ClientDMCC client = clientInstance.get();
|
||||
if (client != null) {
|
||||
client.sendPacket(packet);
|
||||
}
|
||||
}
|
||||
|
||||
// /**
|
||||
// * Sends a packet to a client. Should be called from server only.
|
||||
// *
|
||||
// * @param packet The packet to send
|
||||
// * @param targetName The target client's name
|
||||
// */
|
||||
// public static void sendPacketToClient(Packet packet, String targetName) {
|
||||
// ServerDMCC server = serverInstance.get();
|
||||
// if (server != null) {
|
||||
// server.sendPacket(packet);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Sends a packet to all clients. Should be called from server only.
|
||||
// *
|
||||
// * @param packet The packet to send
|
||||
// */
|
||||
// public static void sendPacketToAll(Packet packet) {
|
||||
// ServerDMCC server = serverInstance.get();
|
||||
// if (server != null) {
|
||||
// server.sendPacket(packet);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
package com.xujiayao.discord_mc_chat.server;
|
||||
|
||||
import com.xujiayao.discord_mc_chat.network.NetworkManager;
|
||||
import com.xujiayao.discord_mc_chat.server.discord.DiscordManager;
|
||||
import com.xujiayao.discord_mc_chat.utils.i18n.I18nManager;
|
||||
|
||||
|
|
@ -42,6 +43,11 @@ public class ServerDMCC {
|
|||
nettyServer = new NettyServer(host, port, sharedSecret);
|
||||
port = nettyServer.start();
|
||||
|
||||
if (port != -1) {
|
||||
// Register to NetworkManager on successful start
|
||||
NetworkManager.registerServer(this);
|
||||
}
|
||||
|
||||
return port;
|
||||
}).get();
|
||||
} catch (Exception e) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue