private static void _setupNewSocketServer(RelayNode relayNode, string instanceName, int portNumber, bool useAsyncHandler, ConnectionWhitelist connectionWhitelist, bool whitelistOnly) { //all public method should lock(_syncRoot) so we should be ok SocketServer socketServer = new SocketServer(instanceName, portNumber); IMessageHandler messageHandler; if (useAsyncHandler) { messageHandler = new SocketServerAsyncMessageHandler(relayNode, relayNode); } else { messageHandler = new SocketServerRelayMessageHandler(relayNode, relayNode); } socketServer.MessageHandler = messageHandler; socketServer.AcceptingConnectionsDelegate = relayNode.AcceptNewConnection; socketServer.WhitelistOnly = whitelistOnly; socketServer.Start(connectionWhitelist); _socketServer = socketServer; if (_cachedWhiteListValue != null) { _socketServer.WhitelistOnly = _cachedWhiteListValue.Value; _cachedWhiteListValue = null; } }
/// <summary> /// Stops the server from listening on a port. /// </summary> public static void Shutdown() { lock (_syncRoot) { if (_socketServer != null && _socketServer.IsRunning) { _socketServer.Stop(); _socketServer = null; } } }