From 174e0fae7f6dcac9e37b38f000d03d1378614be2 Mon Sep 17 00:00:00 2001 From: Sean McArdle Date: Mon, 21 Nov 2016 16:15:35 -0800 Subject: [PATCH] Added better responses and logging around pause function. --- WifiSitter/WifiSitter.cs | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/WifiSitter/WifiSitter.cs b/WifiSitter/WifiSitter.cs index c3f3a8d..9679ad2 100644 --- a/WifiSitter/WifiSitter.cs +++ b/WifiSitter/WifiSitter.cs @@ -393,14 +393,29 @@ namespace WifiSitter break; case "take_five": try { - LogLine("Taking 5 minute break and restoring interfaces."); - OnPause(); - Task.Delay(5 * 60 * 1000).ContinueWith((task) => { - netstate.ShouldCheckState(); // Main loop should check state again when resuming from paused state - OnContinue(); }); - ResetNicState(netstate); - response = new WifiSitterIpcMessage("taking_five", _wsIpc.MyChannelName, "", ""); - _wsIpc.MsgBroadcaster.SendToChannel(_msg.Target, response.IpcMessageJsonString()); + if (_paused) { + response = new WifiSitterIpcMessage("taking_five", _wsIpc.MyChannelName, "", "already_paused"); + _wsIpc.MsgBroadcaster.SendToChannel(_msg.Target, response.IpcMessageJsonString()); + } + else { + int minutes = 5; +#if DEBUG + minutes = 1; // I'm impatient while debugging +#endif + + WriteLog(LogType.info, "Taking {0} minute break and restoring interfaces to initial state.", minutes.ToString()); + OnPause(); + Task.Delay(minutes * 60 * 1000).ContinueWith((task) => { + WriteLog(LogType.info, "Break elapsed. Resuming operation."); + netstate.ShouldCheckState(); // Main loop should check state again when resuming from paused state + OnContinue(); + response = new WifiSitterIpcMessage("taking_five", _wsIpc.MyChannelName, "", "resuming"); + _wsIpc.MsgBroadcaster.SendToChannel(_msg.Target, response.IpcMessageJsonString()); + }); + ResetNicState(netstate); + response = new WifiSitterIpcMessage("taking_five", _wsIpc.MyChannelName, "", "pausing"); + _wsIpc.MsgBroadcaster.SendToChannel(_msg.Target, response.IpcMessageJsonString()); + } } catch { WriteLog(LogType.error, "Failed to enter paused state after 'take_five' request received."); } break;