NetworkStream serverSocial = _tcpStreamManager._tcpStreams.get(NetworkStreamManager.SERVERSOCIAL);
if (serverSocial != null) {
- // TODO: PING server
+ MessagePresence mp = new MessagePresence("PING", new WSYD_SocketAddress(serverSocial.getLocalAddress(), WSYD_SocketAddress.Protocol.TCP));
+ NetworkMessage nm = NetworkMessage.createNetworkMessage("Neighbour", null, mp);
+ serverSocial.queueMessage(nm);
}
}
logp(Level.CONFIG, "Switched to network logger");
}
break;
+
+ case "Pong": // nothing to do - already added to _serviceToAddressMap
+ // TODO: NetworkMessageReceived() add timeout logic to detect missing 'PONG' so stream can be closed and user status set to offline
+ break;
}
}
break;
logp(Level.CONFIG, "Switched to network logger");
}
break;
+ case "PING":
+ if (nm.getReceivedFrom().getProtocol() == WSYD_SocketAddress.Protocol.TCP) {
+ NetworkStream ns = _tcpStreamManager._tcpStreams.get(nm.getKey());
+ if (ns != null) {
+ MessagePresence pong = new MessagePresence("PONG", new WSYD_SocketAddress(ns.getLocalAddress(), WSYD_SocketAddress.Protocol.TCP));
+ NetworkMessage nmPong = NetworkMessage.createNetworkMessage("Neighbour", null, pong);
+ ns.queueMessage(nmPong);
+ }
+ }
}
}
break;