using System; using System.Collections.Generic; using System.Linq; using System.Timers; using ArchestrAServices.Common; using ArchestrAServices.Proxy; namespace ASBClientAccessLayer; [Obsolete("This class is provided for backward compatibility only and will be removed in a future release. If you are using this, contact the ASB team.")] public class SrConfigurationMonitor : IDisposable { private readonly double _pollIntervalmSec = 5000.0; private Timer _timer = new Timer(); private bool disposed; private ManageASBSecurityProxy _sysAuthProxy; private string m_PreviousPayload = string.Empty; private bool _authSvcConnected; public event EventHandler PayLoadChanged; private void PollSrConfigurationChanges() { try { if (_sysAuthProxy != null && _authSvcConnected) { _sysAuthProxy.QueryExtraInfoChanges(out var XMLExtraInfo, Environment.MachineName); if (string.Compare(m_PreviousPayload, XMLExtraInfo) != 0 && !string.IsNullOrEmpty(XMLExtraInfo)) { EventArgs e = new EventArgs(); Dictionary source = RegistryHandler.ParseXMLExtraInfo(XMLExtraInfo); m_PreviousPayload = XMLExtraInfo; RegistryHandler.UpdateDiscoveryInfos(source.ToList()); OnPayLoadChanged(e); } } } catch (Exception) { } } private void TimerElapsed(object sender, EventArgs eventArgs) { PollSrConfigurationChanges(); } protected virtual void OnPayLoadChanged(EventArgs e) { if (this.PayLoadChanged != null) { this.PayLoadChanged(this, e); } } protected virtual void Dispose(bool disposing) { if (disposed) { return; } if (disposing) { if (_sysAuthProxy != null) { _sysAuthProxy.Disconnect(); _sysAuthProxy.Dispose(); _sysAuthProxy = null; } if (_timer != null) { _timer.Elapsed -= TimerElapsed; _timer.Stop(); _timer.Dispose(); _timer = null; } } disposed = true; } public void StartMonitoring() { _timer.Start(); string errorMessage = string.Empty; _authSvcConnected = _sysAuthProxy.Connect(string.Empty, out errorMessage); } public void Dispose() { Dispose(disposing: true); GC.SuppressFinalize(this); } public SrConfigurationMonitor(double pollInterval) { if (pollInterval > 1.0) { _pollIntervalmSec = pollInterval; } _timer.Interval = pollInterval; _timer.Elapsed += TimerElapsed; _sysAuthProxy = new ManageASBSecurityProxy("G2G_1"); } }