public virtual void OnShutdownRequest(Message message) { // Before shutting down, call any event set by the // engine. ShutdownRequest?.Invoke(message); System.Environment.Exit(0); }
internal UpsparkleUpdater() { var dllpath = string.Empty; var resourceName = string.Empty; var assembly = Assembly.GetExecutingAssembly(); if (IntPtr.Size == 4) { // 32-bit resourceName = $"{typeof(IUpsparkleUpdater).Namespace}.x86.{libraryName}"; dllpath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "x86"); } else { // 64-bit resourceName = $"{typeof(IUpsparkleUpdater).Namespace}.x64.{libraryName}"; dllpath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "x64"); } Utilites.LoadUnmanagedLibrary(Path.Combine(dllpath, libraryName)); //Utilites.LoadUnmanagedLibraryFromResource(assembly, resourceName, libraryName); SetErrorCallback(() => Error?.Invoke(this, new EventArgs())); SetCanShutdownCallback(() => CanShutdown?.Invoke(this, new EventArgs())); SetShutdownRequestCallback(() => ShutdownRequest?.Invoke(this, new EventArgs())); SetDidFindUpdateCallback(() => DidFindUpdate?.Invoke(this, new EventArgs())); SetDidNotFindUpdateCallback(() => DidNotFindUpdate?.Invoke(this, new EventArgs())); SetUpdateCancelledCallback(() => UpdateCancelled?.Invoke(this, new EventArgs())); }
private void EventLoop(NetMQSocket socket) { this.logger.LogDebug("Starting shell server event loop at {Address}.", socket); while (alive) { try { // Start by pulling off the next <action>_request message // from the client. var nextMessage = socket.ReceiveMessage(context); logger.LogDebug( $"Received new message:\n" + $"\t{JsonConvert.SerializeObject(nextMessage.Header)}\n" + $"\t{JsonConvert.SerializeObject(nextMessage.ParentHeader)}\n" + $"\t{JsonConvert.SerializeObject(nextMessage.Metadata)}\n" + $"\t{JsonConvert.SerializeObject(nextMessage.Content)}" ); // If this is our first message, we need to set the session // id. if (session == null) { session = nextMessage.Header.Session; } // Get a service that can handle the message type and // dispatch. switch (nextMessage.Header.MessageType) { case "kernel_info_request": KernelInfoRequest?.Invoke(nextMessage); break; case "execute_request": ExecuteRequest?.Invoke(nextMessage); break; case "shutdown_request": ShutdownRequest?.Invoke(nextMessage); break; } } catch (ProtocolViolationException ex) { logger.LogCritical(ex, $"Protocol violation when trying to receive next ZeroMQ message."); } catch (ThreadInterruptedException) { if (alive) { continue; } else { return; } } } }
public ShellServer( ILogger <ShellServer> logger, IOptions <KernelContext> context, IServiceProvider provider, IShellRouter router ) { this.logger = logger; this.context = context.Value; this.provider = provider; this.router = router; router.RegisterHandler("kernel_info_request", async message => KernelInfoRequest?.Invoke(message)); router.RegisterHandler("shutdown_request", async message => ShutdownRequest?.Invoke(message)); }