using System; using System.Collections.Generic; namespace Decal.Adapter.Messages; [CLSCompliant(true)] public class AdapterMessageEventArgs : EventArgs { private EventHandler responder; private List handlers; private bool canAddHandlers; internal bool CanAddHandlers { get { return canAddHandlers; } set { canAddHandlers = value; } } public event EventHandler MessageComplete { add { responder = (EventHandler)Delegate.Combine(responder, value); } remove { responder = (EventHandler)Delegate.Remove(responder, value); } } internal AdapterMessageEventArgs() { handlers = new List(); } public void AddHandler(object obj) { if (!CanAddHandlers) { throw new InvalidOperationException("Unable to add handlers at this time"); } if (obj != null) { handlers.Add(obj); } } public void SetComplete(object handler, AdapterMessageResponseEventArgs e) { handlers.Remove(handler); if (handlers.Count == 0) { e.Complete = true; } if (responder != null) { responder(this, e); } } }