public static DisconnectEngineFromGUI ( ) : void | ||
return | void |
public static void ReconnectEngineToGUI() { Trace.Call(); Frontend.DisconnectEngineFromGUI(); _MainWindow.EngineManager.Reconnect(); Session = _MainWindow.EngineManager.Session; _UserConfig = _MainWindow.EngineManager.UserConfig; Frontend.ConnectEngineToGUI(); }
void OnStateChanged(int state) { Trace.Call(state); if (!Frontend.HadSession) { return; } switch (state) { case (int)StateNM9.Disconnecting: if (!Frontend.IsLocalEngine) { Frontend.DisconnectEngineFromGUI(true); } break; case (int)StateNM8.Disconnected: case (int)StateNM9.Disconnected: WasLocalEngine = Frontend.IsLocalEngine; if (!Frontend.IsLocalEngine) { Frontend.DisconnectEngineFromGUI(false); } break; case (int)StateNM8.Connected: case (int)StateNM9.ConnectedSite: case (int)StateNM9.ConnectedGlobal: if (WasLocalEngine) { // reconnect local protocol managers foreach (var protocolManager in Frontend.Session.ProtocolManagers) { var pm = protocolManager; // run in background so it can't block the GUI ThreadPool.QueueUserWorkItem(delegate { try { pm.Reconnect(Frontend.FrontendManager); } catch (Exception ex) { Frontend.ShowException(ex); } }); } } else { Frontend.ReconnectEngineToGUI(false); } break; } }
private void _OnSwitchRemoteEngineButtonClicked(object obj, EventArgs args) { Trace.Call(obj, args); try { Gtk.MessageDialog md = new Gtk.MessageDialog(null, Gtk.DialogFlags.Modal, Gtk.MessageType.Warning, Gtk.ButtonsType.YesNo, _("Switching the remote engine will disconnect you from the current engine!\n" + "Are you sure you want to do this?")); int result = md.Run(); md.Destroy(); if ((Gtk.ResponseType)result == Gtk.ResponseType.Yes) { Frontend.DisconnectEngineFromGUI(); Frontend.ShowEngineManagerDialog(); } } catch (Exception ex) { Frontend.ShowException(this, ex); } }
protected void OnSwitchRemoteEngineActionActivated(object sender, EventArgs e) { Trace.Call(sender, e); try { var dialog = new Gtk.MessageDialog( Parent, Gtk.DialogFlags.Modal, Gtk.MessageType.Warning, Gtk.ButtonsType.YesNo, _("Switching the remote engine will disconnect you from the current engine!\n" + "Are you sure you want to do this?") ); int result = dialog.Run(); dialog.Destroy(); if ((Gtk.ResponseType)result == Gtk.ResponseType.Yes) { Frontend.DisconnectEngineFromGUI(); Frontend.ShowEngineManagerDialog(); } } catch (Exception ex) { Frontend.ShowException(Parent, ex); } }
public static void ReconnectEngineToGUI(bool cleanly) { Trace.Call(cleanly); if (_InReconnectHandler) { #if LOG4NET _Logger.Debug("ReconnectEngineToGUI(): already in reconnect " + "handler, ignoring reconnect..."); #endif return; } _InReconnectHandler = true; var disconnectedEvent = new AutoResetEvent(false); ThreadPool.QueueUserWorkItem(delegate { try { // delay the disconnect to give the reconnect some extra // time as NetworkManager is not accurate about when the // network is really ready GLib.Timeout.Add(5 * 1000, delegate { Frontend.DisconnectEngineFromGUI(cleanly); disconnectedEvent.Set(); return(false); }); var successful = false; var attempt = 1; while (!successful) { Gtk.Application.Invoke(delegate { MainWindow.NetworkStatus = null; MainWindow.Status = String.Format( _("Reconnecting to engine... (attempt {0})"), attempt++ ); }); try { disconnectedEvent.WaitOne(); _MainWindow.EngineManager.Reconnect(); successful = true; } catch (Exception ex) { #if LOG4NET _Logger.Debug("ReconnectEngineToGUI(): Exception", ex); #endif disconnectedEvent.Set(); Thread.Sleep(30 * 1000); } } _UserConfig = _MainWindow.EngineManager.UserConfig; EngineAssemblyVersion = _MainWindow.EngineManager.EngineAssemblyVersion; EngineProtocolVersion = _MainWindow.EngineManager.EngineProtocolVersion; Session = _MainWindow.EngineManager.Session; Gtk.Application.Invoke(delegate { Frontend.ConnectEngineToGUI(); }); } catch (Exception ex) { Frontend.ShowException(ex); } finally { _InReconnectHandler = false; } }); }