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>
*/
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
/**
* Log service running in a SwingWorker thread.
*/
- NetworkServerUDP _logServer = null;
+ NetworkServerUDP _udpLogService = null;
/**
* Multi-cast neighbour advertise and discover service in a SwingWorker thread.
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() {
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