示例#1
0
 public virtual void OnShutdownRequest(Message message)
 {
     // Before shutting down, call any event set by the
     // engine.
     ShutdownRequest?.Invoke(message);
     System.Environment.Exit(0);
 }
示例#2
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()));
        }
示例#3
0
        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;
                    }
                }
            }
        }
示例#4
0
        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));
        }