예제 #1
0
        public void DeadManSwitch_ResetCallback_CalledOnConstruction()
        {
            DeadManSwitchResetReason resetReason = DeadManSwitchResetReason.ManualReset;

            using (var dms = new DeadManSwitch(TimeSpan.FromMilliseconds(100), () => { }, (r) => resetReason = r, false))
            {
                Assert.AreEqual(DeadManSwitchResetReason.Initialize, resetReason, "Reset callback not called or not called with initialize as the reason when switch constructed.");
            }
        }
예제 #2
0
        /// <summary>
        /// Resets the switch and calls the reset callback with the specified <paramref name="reason"/>.
        /// </summary>
        /// <param name="reason">The reason the reset occurred, provided to the reset callback, if any.</param>
        private void Reset(DeadManSwitchResetReason reason)
        {
            using (var busyToken = base.ObtainBusyToken())
            {
                _SwitchTimer.Change(_DelayMilliseconds, System.Threading.Timeout.Infinite);
            }

            //Actions taken on reset may be slow, should not stop timer from being reset if the event occurs again.
            _ResetCallback?.Invoke(reason);
        }
예제 #3
0
 private static void Reset(DeadManSwitchResetReason reason)
 {
     if (reason == DeadManSwitchResetReason.Initialize)
     {
         Console.WriteLine("Dead man switch active... Press key within 5 seconds...");
     }
     else
     {
         Console.WriteLine("Reset...Press key within 5 seconds...");
     }
 }
예제 #4
0
        public async Task DeadManSwitch_ResetCallback_CalledOnAutoReset()
        {
            DeadManSwitchResetReason resetReason = DeadManSwitchResetReason.Initialize;

            using (var dms = new DeadManSwitch(TimeSpan.FromMilliseconds(100), () => { }, (r) => resetReason = r, true))
            {
                await Task.Delay(150);

                Assert.AreEqual(DeadManSwitchResetReason.AutoReset, resetReason, "Reset callback not called or not called with auto as reason after switch activated and auto reset enabled.");
            }
        }
예제 #5
0
        public void DeadManSwitch_ResetCallback_CalledOnManualReset()
        {
            DeadManSwitchResetReason resetReason = DeadManSwitchResetReason.Initialize;

            using (var dms = new DeadManSwitch(TimeSpan.FromMilliseconds(100), () => { }, (r) => resetReason = r, false))
            {
                dms.Reset();

                Assert.AreEqual(DeadManSwitchResetReason.ManualReset, resetReason, "Reset callback not called or not called with  manual as reason after calling Reset() method.");
            }
        }