public void Dispose()
 {
     _breakAwayCfg  = null;
     _configuration = null;
     _loginSession  = null;
     GC.SuppressFinalize(this);
 }
 public BreakAwayManager(ListService listServiceInstance)
 {
     _breakAwayCfg     = new BreakAwayCfgHelper();
     _configuration    = _breakAwayCfg.GetConfiguration();
     _loginSession     = new LoginSession();
     _listService      = listServiceInstance;
     _breakAwayLatency = GetBreakAwayLatencyValue();
 }
        private static IEnumerable <ChannelDescription> GetAllBreakAwayChannels(BreakAwayConfigurationDTO configuration)
        {
            var res = new List <ChannelDescription>();

            if (configuration.GroupList != null)
            {
                foreach (var group in configuration.GroupList)
                {
                    res.AddRange(group.Channels);
                }
            }
            return(res);
        }
        public Boolean SetConfiguration(BreakAwayConfigurationDTO breakAwayCfg)
        {
            Boolean res = true;

            try
            {
                Type[] personTypes = { typeof(BreakAwayGroupDTO), typeof(ChannelDescription) };
                var    serializer  = new XmlSerializer(typeof(BreakAwayConfigurationDTO), personTypes);
                var    fs          = new FileStream(_breakAwayCfgFileName, FileMode.Create);
                serializer.Serialize(fs, breakAwayCfg);
                fs.Close();
            }
            catch (Exception ex)
            {
                ServiceLogger.ErrorFormat("Unable to write the Break Away configuration to file {0},reason:{1}", _breakAwayCfgFileName, ex);
                res = false;
            }
            return(res);
        }
        public BreakAwayConfigurationDTO GetConfiguration()
        {
            var breakAwayConfig = new BreakAwayConfigurationDTO();

            Type[] personTypes = { typeof(BreakAwayGroupDTO), typeof(ChannelDescription) };
            var    serializer  = new XmlSerializer(typeof(BreakAwayConfigurationDTO), personTypes);

            try
            {
                using (var fs = new FileStream(_breakAwayCfgFileName, FileMode.Open))
                {
                    breakAwayConfig = (BreakAwayConfigurationDTO)serializer.Deserialize(fs);
                }
            }
            catch (Exception ex)
            {
                ServiceLogger.ErrorFormat("Unable to get the Break Away configuration from file {0},reason:{1}", _breakAwayCfgFileName, ex);
            }

            return(breakAwayConfig);
        }
Example #6
0
 public Boolean SetBreakAwayConfiguration(BreakAwayConfigurationDTO breakAwayCfg)
 {
     return(_breakAwayManager.SetConfiguration(breakAwayCfg));
 }
        private BreakAwayListStatusDTO GetBreakAwayListStatus(String server, Int32 list, BreakAwayConfigurationDTO configurationSource)
        {
            var res = new BreakAwayListStatusDTO();

            if (configurationSource.GroupList != null)
            {
                foreach (var @group in configurationSource.GroupList
                         .Where(@group => @group.Channels.Find(ch => ch.ServerName == server && ch.List == list) != null))
                {
                    res.DefaultPath  = group.DefaultPath;
                    res.HasBreakAway = true;
                    res.SequencePath = group.SequencePath;
                    res.InBreakAway  = _listService.GetBreakAwayState(server, list);
                    break;
                }
            }
            return(res);
        }
 public Boolean SetConfiguration(BreakAwayConfigurationDTO breakAwayConfiguration)
 {
     if (_breakAwayCfg.SetConfiguration(breakAwayConfiguration))
     {
         if (_configuration.GroupList != null)
         {
             var newChannels      = GetAllBreakAwayChannels(breakAwayConfiguration).ToList();
             var currentChannels  = GetAllBreakAwayChannels(_configuration).ToList();
             var channelsToRemove = Compare(currentChannels, newChannels);
             foreach (var ch in channelsToRemove)
             {
                 var chStatus = GetBreakAwayListStatus(ch.ServerName, ch.List);
                 if (OnBreakAwayListStatusChanged == null)
                 {
                     continue;
                 }
                 // Channel was removed from configuration
                 chStatus.HasBreakAway = false;
                 OnBreakAwayListStatusChanged(this, new BreakAwayListStatusChangedArgs(ch.ServerName, ch.List, chStatus));
             }
             foreach (var newCh in newChannels)
             {
                 var newStatus = GetBreakAwayListStatus(newCh.ServerName, newCh.List, breakAwayConfiguration);
                 var currentCh = currentChannels.FirstOrDefault(ch => ch.Equals(newCh));
                 if (currentCh != null)
                 {
                     var currentStatus = GetBreakAwayListStatus(newCh.ServerName, newCh.List);
                     if (!currentStatus.Equals(newStatus))
                     {
                         if (OnBreakAwayListStatusChanged != null)
                         {
                             //Channel was updated
                             OnBreakAwayListStatusChanged(this, new BreakAwayListStatusChangedArgs(newCh.ServerName, newCh.List, newStatus));
                         }
                     }
                 }
                 else
                 {
                     if (OnBreakAwayListStatusChanged != null)
                     {
                         //Channel was added
                         newStatus.HasBreakAway = true;
                         OnBreakAwayListStatusChanged(this, new BreakAwayListStatusChangedArgs(newCh.ServerName, newCh.List, newStatus));
                     }
                 }
             }
             _configuration = breakAwayConfiguration;
         }
         else
         {
             //Configuration is empty
             _configuration = breakAwayConfiguration;
             var channels = GetAllBreakAwayChannels(_configuration);
             foreach (var ch in channels)
             {
                 var chStatus = GetBreakAwayListStatus(ch.ServerName, ch.List);
                 if (OnBreakAwayListStatusChanged != null)
                 {
                     OnBreakAwayListStatusChanged(this, new BreakAwayListStatusChangedArgs(ch.ServerName, ch.List, chStatus));
                 }
             }
         }
         return(true);
     }
     return(false);
 }
        private void SetDefaultBreakAwayConfig()
        {
            var res = new BreakAwayConfigurationDTO();

            SetConfiguration(res.ToDefault());
        }