internal void RemoveDeadClients() { _subscribers.RemoveAll(client => { var reasonIsNotAlive = !client.IsAlive; var reasonNoCallbacks = !client.HasCallbacks(); if (reasonIsNotAlive || reasonNoCallbacks) { ServiceLogger.InformationalFormat("Client {0} was removed (reason:{1}{2})", client.GetClientName(), reasonIsNotAlive ? " is not 'alive'" : String.Empty, reasonNoCallbacks ? " doesn't has subscriptions" : String.Empty); client.Dispose(); } return(reasonIsNotAlive || reasonNoCallbacks); }); }
private void InitBreakAwayConfig() { const String defaultFilePath = ".\\config\\BreakAwayConfig.xml"; String filePath = new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath; String directory = Path.GetDirectoryName(filePath); String path = ConfigurationManager.AppSettings["BreakAwayConfigFilePath"]; if (string.IsNullOrEmpty(path)) { path = defaultFilePath; } if (directory != null) { _breakAwayCfgFileName = Path.Combine(directory, path); } if (!File.Exists(_breakAwayCfgFileName)) { ServiceLogger.InformationalFormat("BreakAway configuration {0} was not found. ", _breakAwayCfgFileName); SetDefaultBreakAwayConfig(); } }