private void SafeHandleEventAndSetResult(string signaledEventKey)
            {
                lock (_locker)
                {
                    if (_handlerCalled)
                    {
                        return;
                    }

                    _handlerCalled = true;

                    foreach (var eventKey in _eventKeys)
                    {
                        _signalBus.RemoveHandler(eventKey, Handler);
                    }

                    if (_canceled)
                    {
                        Tcs.SetCanceled();
                    }
                    else
                    {
                        Tcs.SetResult(new SignalResult {
                            TimedOut = _timedOut, EventKey = signaledEventKey
                        });
                    }

                    Timer timer;
                    if (_timers.TryRemove(_timerKey, out timer))
                    {
                        timer.Dispose();
                    }
                }
            }
Exemple #2
0
        public void RemoveHandler(string eventKey, EventHandler <SignaledEventArgs> handler)
        {
            EventHandler <SignaledEventArgs> tracedHandler;

            if (_cache.TryRemove(Tuple.Create(eventKey, handler), out tracedHandler))
            {
                _bus.RemoveHandler(eventKey, tracedHandler);
            }
        }
Exemple #3
0
            private void SafeHandleEventAndSetResult(string signaledEventKey)
            {
                // Only want to handle the signaled event once, then remove the handler from the bus
                if (_handlerCalled)
                {
                    return;
                }

                lock (_locker)
                {
                    if (_handlerCalled)
                    {
                        return;
                    }

                    _handlerCalled = true;
                }

                // TODO: Change this to SignalBus.RemoveHandler(IEnumerable<string> eventKeys, Func handler)
                //       Let the individual SignalBus implementations deal with how do that
                foreach (var eventKey in _eventKeys)
                {
                    _signalBus.RemoveHandler(eventKey, Handler);
                }

                if (_canceled)
                {
                    Tcs.SetCanceled();
                }
                else
                {
                    Tcs.SetResult(new SignalResult
                    {
                        TimedOut = _timedOut,
                        EventKey = signaledEventKey
                    });
                }

                _signalActions.Remove(this);
            }
Exemple #4
0
            private void SafeHandleEventAndSetResult(string signaledEventKey)
            {
                // Only want to handle the signaled event once, then remove the handler from the bus
                if (_handlerCalled)
                {
                    return;
                }

                lock (_locker)
                {
                    if (_handlerCalled)
                    {
                        return;
                    }

                    _handlerCalled = true;
                }

                foreach (var eventKey in _eventKeys)
                {
                    _signalBus.RemoveHandler(eventKey, Handler);
                }

                if (_canceled)
                {
                    Tcs.SetCanceled();
                }
                else
                {
                    Tcs.SetResult(new SignalResult
                    {
                        TimedOut = _timedOut,
                        EventKey = signaledEventKey
                    });
                }

                _signalActions.Remove(this);
            }
Exemple #5
0
            private void SafeHandleEventAndSetResult(string signaledEventKey)
            {
                // Only want to handle the signaled event once, then remove the handler from the bus
                if (_handlerCalled)
                {
                    return;
                }

                lock (_locker)
                {
                    if (_handlerCalled)
                    {
                        return;
                    }

                    _handlerCalled = true;
                }

                _signalBus.RemoveHandler(_eventKeys, Handler);

                if (_canceled)
                {
                    Tcs.SetCanceled();
                }
                else if (_timedOut)
                {
                    Tcs.SetResult(_timedOutResult);
                }
                else
                {
                    Tcs.SetResult(new SignalResult
                    {
                        EventKey = signaledEventKey
                    });
                }

                _removeCallback(this);
            }