public override Task <StatusReply> Shutdown(EmptyRequest request, ServerCallContext context) { Messenger.Post("Shutting down. Thank you for using J.U.K.E\n"); ShuttingDown = true; jukeController.Dispose(); var processes = Process.GetProcesses().Where(x => x.ProcessName == "afplay"); foreach (var process in processes) { process.Kill(true); } ShutdownInitiated?.Invoke(this, EventArgs.Empty); return(Task.FromResult(new StatusReply { IsOk = true })); }
public IDEModel(DTE dte) { this.dte = dte; dteEvents = this.dte.Events.DTEEvents; dteEvents.OnStartupComplete += () => StartupComplete?.Invoke(); dteEvents.OnBeginShutdown += () => ShutdownInitiated?.Invoke(); debuggerEvents = this.dte.Events.DebuggerEvents; debuggerEvents.OnEnterDesignMode += (dbgEventReason e) => OnModeChanged(dbgDebugMode.dbgDesignMode); debuggerEvents.OnEnterRunMode += (dbgEventReason e) => OnModeChanged(dbgDebugMode.dbgRunMode); debuggerEvents.OnEnterBreakMode += (dbgEventReason e, ref dbgExecutionAction action) => OnModeChanged(dbgDebugMode.dbgBreakMode); VsMode = this.dte.Debugger.CurrentMode; // callbacks for IDE windows being opened var events2 = dte.Events as Events2; if (events2 != null) { windowVisibilityEvents = events2.WindowVisibilityEvents; windowVisibilityEvents.WindowShowing += (Window w) => WindowShown?.Invoke(w); } }
private void HandleShutdownServerCommand(object sender, Request pendingRequest) { if (!MyInfo.IsEqualTo(pendingRequest.RemoteServerInfo)) { var error = "Server shutdown command was received, but the command was not sent " + "by this server. Aborting shutdown process."; ReportError(this, error); return; } _eventLog.Add(new ServerEvent { EventType = EventType.ReceivedShutdownServerCommand, RemoteServerIpAddress = pendingRequest.RemoteServerInfo.SessionIpAddress, RemoteServerPortNumber = pendingRequest.RemoteServerInfo.PortNumber, RequestId = pendingRequest.Id }); EventOccurred?.Invoke(this, _eventLog.Last()); ShutdownInitiated?.Invoke(this, new EventArgs()); SuccessfullyProcessedRequest?.Invoke(this, pendingRequest); }