Added facility to indicate when it should actually check network state while paused.

systray
Sean McArdle 2016-11-21 14:28:44 -08:00
parent 54adbc10ab
commit fb9d095e9c
2 changed files with 11 additions and 2 deletions

View File

@ -87,6 +87,10 @@ namespace WifiSitter
this.ProcessingState = false;
}
internal void ShouldCheckState() {
this.CheckNet = true;
}
public void UpdateNics(List<TrackedNic> Nics) {
foreach (var n in Nics) {
if (!_originalNicState.Any(x => x[0] == n.Id)) _originalNicState.Add(new string[] { n.Id, n.IsEnabled.ToString() });

View File

@ -384,7 +384,10 @@ namespace WifiSitter
switch (_msg.Request) {
case "get_netstate":
LogLine("Sending netstate to: {0}", _msg.Requestor);
if (_paused) netstate.UpdateNics(DiscoverAllNetworkDevices(netstate.Nics));
if (_paused && netstate.CheckNet) {
netstate.UpdateNics(DiscoverAllNetworkDevices(netstate.Nics));
netstate.StateChecked();
}
response = new WifiSitterIpcMessage("give_netstate", _wsIpc.MyChannelName, "", Newtonsoft.Json.JsonConvert.SerializeObject(new Model.SimpleNetworkState(netstate)));
_wsIpc.MsgBroadcaster.SendToChannel(_msg.Target, response.IpcMessageJsonString());
break;
@ -392,7 +395,9 @@ namespace WifiSitter
try {
LogLine("Taking 5 minute break and restoring interfaces.");
OnPause();
Task.Delay(5 * 60 * 1000).ContinueWith((task) => { OnContinue(); }, TaskScheduler.FromCurrentSynchronizationContext());
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());