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."); } }
/// <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); }
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..."); } }
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."); } }
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."); } }