From 08321bd08d96f100732dcd8457910d53cc598b29 Mon Sep 17 00:00:00 2001 From: TJ Date: Sun, 3 May 2015 11:50:14 +0100 Subject: [PATCH] ServerManagement: add support for sending UDP Control messages to servers --- .../wsyd/management/ServerManagement.java | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/uk/ac/ntu/n0521366/wsyd/management/ServerManagement.java b/src/uk/ac/ntu/n0521366/wsyd/management/ServerManagement.java index ada15f6..80cdee1 100644 --- a/src/uk/ac/ntu/n0521366/wsyd/management/ServerManagement.java +++ b/src/uk/ac/ntu/n0521366/wsyd/management/ServerManagement.java @@ -32,6 +32,9 @@ import java.net.URI; import java.io.IOException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetSocketAddress; import javax.swing.Timer; import javax.swing.table.DefaultTableModel; import java.net.UnknownHostException; @@ -46,6 +49,7 @@ import java.util.ArrayList; import uk.ac.ntu.n0521366.wsyd.libs.logging.TableModelHandler; import uk.ac.ntu.n0521366.wsyd.libs.message.MessageLogRecord; import uk.ac.ntu.n0521366.wsyd.libs.message.MessagePresence; +import uk.ac.ntu.n0521366.wsyd.libs.message.MessageServerControl; import uk.ac.ntu.n0521366.wsyd.libs.net.WSYD_SocketAddress.Protocol; import uk.ac.ntu.n0521366.wsyd.libs.net.*; @@ -64,6 +68,11 @@ public class ServerManagement extends javax.swing.JFrame implements NetworkMessa */ private static final String resourcePath = "/uk/ac/ntu/n0521366/wsyd/resources"; + /** + * Readable/displayable name of this application + */ + String _title; + /** * The UDP listener address for incoming log messages */ @@ -107,6 +116,7 @@ public class ServerManagement extends javax.swing.JFrame implements NetworkMessa * @see #initListeners() */ public ServerManagement() { + _title = "ServerManagement"; LOGGER.setLevel(Level.ALL); initComponents(); _doLogging = true; @@ -217,6 +227,35 @@ public class ServerManagement extends javax.swing.JFrame implements NetworkMessa return _doLogging; } + protected boolean UDPSend(NetworkMessage message) { + boolean result = false; + + if (message != null) { + InetSocketAddress address = this._multicastServer.getTargetAddress(message.getTarget()); + if (address != null) { + message.setSender("ServerManagement"); + try { + byte[] dataSend = NetworkMessage.serialize(message); + DatagramPacket packetSend = new DatagramPacket(dataSend, dataSend.length); + // set target's remote host address and port + packetSend.setAddress(address.getAddress()); + packetSend.setPort(address.getPort()); + + DatagramSocket socket = new DatagramSocket(); + // acknowledge receipt + socket.send(packetSend); + System.err.println(MessageFormat.format("Sending packet for {0} to {1} ({3}:{4}) from {2}", message.getIntent(), message.getTarget(), message.getSender(), packetSend.getAddress().getHostAddress(), packetSend.getPort())); + + result = true; // successful + } catch (IOException e) { + // TODO: serverSend() add IOException handler + e.printStackTrace(); + } + } + } + return result; + } + /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always @@ -430,7 +469,13 @@ public class ServerManagement extends javax.swing.JFrame implements NetworkMessa private void gMenuServerSocialRestartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_gMenuServerSocialRestartActionPerformed // TODO add your handling code here: + System.err.println("Requesting ServerSocial Restart"); + MessageServerControl mc = new MessageServerControl(MessageServerControl.EXIT.NO , MessageServerControl.RESTART.YES); + NetworkMessage nm = NetworkMessage.createNetworkMessage("Control", "ServerSocial", mc); + nm.setSender("ServerLog"); + UDPSend(nm); + }//GEN-LAST:event_gMenuServerSocialRestartActionPerformed /** -- 2.17.1