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); }
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()); }