示例#1
0
 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();
            }
        }