internal void NotifySignalListeners(IAdapterSignal signal) { int signalHashCode = signal.GetHashCode(); IList <SIGNAL_LISTENER_ENTRY> listenerList = null; lock (m_signalListeners) { if (m_signalListeners.ContainsKey(signalHashCode)) { // make a local copy of the listener list listenerList = m_signalListeners[signalHashCode].ToArray(); } else { // can't do anything return; } } // call out event handlers out of the lock to avoid // deadlock risk foreach (SIGNAL_LISTENER_ENTRY entry in listenerList) { IAdapterSignalListener listener = entry.Listener; object listenerContext = entry.Context; listener.AdapterSignalHandler(signal, listenerContext); } }
internal uint NotifySignalListener(IAdapterSignal Signal) { if (Signal == null) { return(ERROR_INVALID_HANDLE); } int signalHashCode = Signal.GetHashCode(); lock (this.signalListeners) { if (!this.signalListeners.ContainsKey(signalHashCode)) { Debug.WriteLine("Error: Signal not found!"); return(ERROR_SUCCESS); } IList <SIGNAL_LISTENER_ENTRY> listenerList = this.signalListeners[signalHashCode]; foreach (SIGNAL_LISTENER_ENTRY entry in listenerList) { IAdapterSignalListener listener = entry.Listener; object listenerContext = entry.Context; listener.AdapterSignalHandler(Signal, listenerContext); } } return(ERROR_SUCCESS); }
public uint RegisterSignalListener(IAdapterSignal Signal, IAdapterSignalListener Listener, object ListenerContext) { if (Signal == null || Listener == null) { return(ERROR_INVALID_HANDLE); } int signalHashCode = Signal.GetHashCode(); SIGNAL_LISTENER_ENTRY newEntry; newEntry.Signal = Signal; newEntry.Listener = Listener; newEntry.Context = ListenerContext; lock (this.signalListeners) { if (this.signalListeners.ContainsKey(signalHashCode)) { this.signalListeners[signalHashCode].Add(newEntry); } else { IList <SIGNAL_LISTENER_ENTRY> newEntryList = new List <SIGNAL_LISTENER_ENTRY>(); newEntryList.Add(newEntry); this.signalListeners.Add(signalHashCode, newEntryList); } } return(ERROR_SUCCESS); }
public uint NotifySignalListener(IAdapterSignal Signal) { if (Signal == null) { return(ERROR_INVALID_HANDLE); } int signalHashCode = Signal.GetHashCode(); lock (this.signalListeners) { IList <SIGNAL_LISTENER_ENTRY> listenerList = this.signalListeners[signalHashCode]; foreach (SIGNAL_LISTENER_ENTRY entry in listenerList) { IAdapterSignalListener listener = entry.Listener; object listenerContext = entry.Context; listener.AdapterSignalHandler(Signal, listenerContext); } } return(ERROR_SUCCESS); }
public uint RegisterSignalListener( IAdapterSignal Signal, IAdapterSignalListener Listener, object ListenerContext) { // sanity check if (Signal == null || Listener == null) { return(ERROR_INVALID_PARAMETER); } int signalHashCode = Signal.GetHashCode(); SIGNAL_LISTENER_ENTRY newEntry; newEntry.Signal = Signal; newEntry.Listener = Listener; newEntry.Context = ListenerContext; lock (m_signalListeners) { if (m_signalListeners.ContainsKey(signalHashCode)) { m_signalListeners[signalHashCode].Add(newEntry); } else { var newEntryList = new List <SIGNAL_LISTENER_ENTRY> { newEntry }; m_signalListeners.Add(signalHashCode, newEntryList); } } return(ERROR_SUCCESS); }
public uint UnregisterSignalListener( IAdapterSignal Signal, IAdapterSignalListener Listener) { return ERROR_SUCCESS; }
public uint RegisterSignalListener( IAdapterSignal Signal, IAdapterSignalListener Listener, object ListenerContext) { if (Signal == null || Listener == null) { return ERROR_INVALID_HANDLE; } int signalHashCode = Signal.GetHashCode(); SIGNAL_LISTENER_ENTRY newEntry; newEntry.Signal = Signal; newEntry.Listener = Listener; newEntry.Context = ListenerContext; lock (this.signalListeners) { if (this.signalListeners.ContainsKey(signalHashCode)) { this.signalListeners[signalHashCode].Add(newEntry); } else { IList<SIGNAL_LISTENER_ENTRY> newEntryList; try { newEntryList = new List<SIGNAL_LISTENER_ENTRY>(); } catch (OutOfMemoryException ex) { throw; } newEntryList.Add(newEntry); this.signalListeners.Add(signalHashCode, newEntryList); } } return ERROR_SUCCESS; }
public uint UnregisterSignalListener(IAdapterSignal Signal, IAdapterSignalListener Listener) { return(_adapter.UnregisterSignalListener(Signal, Listener)); }
public uint RegisterSignalListener(IAdapterSignal Signal, IAdapterSignalListener Listener, object ListenerContext) { return(_adapter.RegisterSignalListener(Signal, Listener, ListenerContext)); }
public uint UnregisterSignalListener( IAdapterSignal Signal, IAdapterSignalListener Listener) { return(ERROR_SUCCESS); }
public uint RegisterSignalListener( IAdapterSignal Signal, IAdapterSignalListener Listener, object ListenerContext) { return ERROR_SUCCESS; }