public static void addListener(NetworkClockEndpointInfo endPoint) { logMessage(new MessageEvent("Adding network " + endPoint.HostType.ToString() + " clock listener at hostname: " + endPoint.HostName, 0, MessageEvent.MessageTypes.Routine, MessageEvent.MessageCategories.SoftwareClock)); if (!clients.ContainsKey(endPoint.HostName)) { UdpClient client = new UdpClient(endPoint.HostName, endPoint.getPort()); clients.Add(endPoint.HostName, client); } logMessage(new MessageEvent("...done", 0, MessageEvent.MessageTypes.Routine, MessageEvent.MessageCategories.SoftwareClock)); }
/// <summary> /// Returns true if successful, false otherwise. /// </summary> /// <param name="listenerType"></param> /// <returns></returns> public static bool startListener(NetworkClockEndpointInfo.HostTypes listenerType) { lock (staticLockObj) { staticLogMessage(new MessageEvent("Starting network clock listener...", 0, MessageEvent.MessageTypes.Routine, MessageEvent.MessageCategories.SoftwareClock)); myListenerType = listenerType; // Check if a listener thread is running already. if (listenerThread != null) { throw new SoftwareClockProviderException("Attempted to start listener thread when already started."); } // Open a UDP socket staticLogMessage(new MessageEvent("Opening UDP input socket for network clock.", 1, MessageEvent.MessageTypes.Log, MessageEvent.MessageCategories.Networking)); try { udpClient = new UdpClient(NetworkClockEndpointInfo.getListenerPort(myListenerType)); } catch (System.Net.Sockets.SocketException e) { staticLogMessage(new MessageEvent("Unable to open input socket for network clock due to socket exception: " + e.Message, 0, MessageEvent.MessageTypes.Error, MessageEvent.MessageCategories.Networking)); udpClient = null; return(false); } listenerThread = new Thread(listenerThreadProc); listenerThread.Start(); providers = new Dictionary <uint, NetworkClockProvider>(); } return(true); }
/// <summary> /// Returns true if successful, false otherwise. /// </summary> /// <param name="listenerType"></param> /// <returns></returns> public static bool startListener(NetworkClockEndpointInfo.HostTypes listenerType) { lock (staticLockObj) { staticLogMessage(new MessageEvent("Starting network clock listener...", 0, MessageEvent.MessageTypes.Routine, MessageEvent.MessageCategories.SoftwareClock)); myListenerType = listenerType; // Check if a listener thread is running already. if (listenerThread != null) { throw new SoftwareClockProviderException("Attempted to start listener thread when already started."); } // Open a UDP socket staticLogMessage(new MessageEvent("Opening UDP input socket for network clock.", 1, MessageEvent.MessageTypes.Log, MessageEvent.MessageCategories.Networking)); try { udpClient = new UdpClient(NetworkClockEndpointInfo.getListenerPort(myListenerType)); } catch (System.Net.Sockets.SocketException e) { staticLogMessage(new MessageEvent("Unable to open input socket for network clock due to socket exception: " + e.Message, 0, MessageEvent.MessageTypes.Error, MessageEvent.MessageCategories.Networking)); udpClient = null; return false; } listenerThread = new Thread(listenerThreadProc); listenerThread.Start(); providers = new Dictionary<uint, NetworkClockProvider>(); } return true; }