ServerManagement: become owner of ServiceAddressMap
authorTJ <hacker@iam.tj>
Mon, 4 May 2015 15:38:00 +0000 (16:38 +0100)
committerTJ <hacker@iam.tj>
Mon, 4 May 2015 15:38:00 +0000 (16:38 +0100)
ServiceAddressMap is now application-wide so all network service daemons
use the same map.

Refactor variable names to better reflect their purpose ("Server" >
"Service").

src/uk/ac/ntu/n0521366/wsyd/management/ServerManagement.java

index 575d2ed..2fb2938 100644 (file)
@@ -53,7 +53,7 @@ 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.*;
-
+import uk.ac.ntu.n0521366.wsyd.libs.net.ServiceAddressMap.LastSeenHost;
 /**
  *
  * @author TJ <hacker@iam.tj>
@@ -74,11 +74,15 @@ public class ServerManagement extends javax.swing.JFrame implements NetworkMessa
      */
     final String _title = "ServerManagement";
 
+    /**
+     * Network services to address map.
+     */
     ServiceAddressMap _serviceToAddressMap;
+
     /**
      * The UDP listener address for incoming log messages
      */
-    WSYD_SocketAddress _logServerSA = null;
+    WSYD_SocketAddress _udpLogServiceSA = null;
 
     /**
      * UDP multi-cast presence advertiser
@@ -88,7 +92,7 @@ public class ServerManagement extends javax.swing.JFrame implements NetworkMessa
     /**
      * Log service running in a SwingWorker thread.
      */
-    NetworkServerUDP _logServer = null;
+    NetworkServerUDP _udpLogService = null;
 
     /**
      * Multi-cast neighbour advertise and discover service in a SwingWorker thread.
@@ -158,16 +162,18 @@ public class ServerManagement extends javax.swing.JFrame implements NetworkMessa
         LOGGER.setUseParentHandlers(false); // don't send messages to the default error stream logger of the parent
         LOGGER.log(Level.INFO, "Server Management starting");
         
-        _logServerSA = new WSYD_SocketAddress(Network.PORTS_SERVER_LOG, Protocol.UDP);
-        _logServer = new NetworkServerUDP(_logServerSA, _title, _serviceToAddressMap, LOGGER);
-        _logServer.addNetworkMessageEventListener(this, "Log");
-        _logServer.setSimulate(false);
-        _logServer.execute();
+        _udpLogServiceSA = new WSYD_SocketAddress(Network.PORTS_SERVER_LOG, Protocol.UDP);
+        _udpLogService = new NetworkServerUDP(_udpLogServiceSA, _title + "Log", _serviceToAddressMap, LOGGER);
+        _udpLogService.addNetworkMessageEventListener(this, "Log");
+        _udpLogService.setSimulate(false);
+        _udpLogService.execute();
 
         _multicastAdvertiserSA = new WSYD_SocketAddress(Network.MULTICAST_IP, Network.PORTS_MULTICAST_DISCOVERY, Protocol.UDP);
-        _multicastServer = new NetworkServerUDPMulticast(_multicastAdvertiserSA, "ServerManagementMC", _serviceToAddressMap, LOGGER);
+        _multicastServer = new NetworkServerUDPMulticast(_multicastAdvertiserSA, _title + "MC", _serviceToAddressMap, LOGGER);
         _multicastServer.addNetworkMessageEventListener(this, "Neighbour");
         _multicastServer.execute();
+        // permit broadcasting to pseudo-host 'all' since this is multicast
+        _serviceToAddressMap.put("all", new LastSeenHost(new InetSocketAddress(Network.MULTICAST_IP, Network.PORTS_MULTICAST_DISCOVERY), LastSeenHost.STATE.STATIC));
         
         if (this._multicastAnnouncements) {
             ActionListener multicastAnnounceActionListener = new ActionListener() {
@@ -186,9 +192,9 @@ public class ServerManagement extends javax.swing.JFrame implements NetworkMessa
                     LOGGER.log(record);
 
                     // Announce the Log Server service
-                    MessagePresence mp = new MessagePresence("ServerLog", Network.PORTS_SERVER_LOG);
+                    MessagePresence mp = new MessagePresence(_title + "Log", _udpLogService.getSocketAddress());
                     NetworkMessage nm = NetworkMessage.createNetworkMessage("Neighbour", "all", mp);
-                    nm.setSender("ServerLog");
+                    nm.setSender(_title + "Log");
                     _multicastServer.queueMessage(nm);
 
                     // clean up the known hosts map and keep Server menu up-to-date