private void OnLogEvent(
            DiagnosticLogEntryProduced logEvent,
            ZeroMQMessage request,
            IJupyterMessageSender jupyterMessageSender)
        {
            var transient = CreateTransient();

            var span = _textSpanFormatter.ParseToSpan($"{Ansi.Color.Foreground.DarkGray}{logEvent.Message}{Ansi.Text.AttributesOff}");

            var message = span.ToString(OutputMode.Ansi);

            var dataMessage = new DisplayData(
                transient: transient,
                data: new Dictionary <string, object> {
                [PlainTextFormatter.MimeType] = message
            });

            var isSilent = ((ExecuteRequest)request.Content).Silent;

            if (!isSilent)
            {
                // send on io
                jupyterMessageSender.Send(dataMessage);
            }
        }
        private void DeserializeAndSendEvent(string line)
        {
            try
            {
                var kernelEventEnvelope = KernelEventEnvelope.Deserialize(line);
                _kernelEvents.OnNext(kernelEventEnvelope.Event);
            }
            catch (JsonReaderException ex)
            {
                var diagnosticEvent = new DiagnosticLogEntryProduced(
                    $"Error while parsing command: {ex.Message}\n{line}");

                _kernelEvents.OnNext(diagnosticEvent);
            }
        }
示例#3
0
        public async IAsyncEnumerable <CommandOrEvent> CommandsOrEventsAsync([EnumeratorCancellation] CancellationToken cancellationToken)
        {
            while (!cancellationToken.IsCancellationRequested)
            {
                KernelCommand kernelCommand = null;
                KernelEvent   kernelEvent   = null;

                var message = await ReadMessageAsync(cancellationToken);

                if (string.IsNullOrWhiteSpace(message))
                {
                    continue;
                }

                var isParseError = false;
                try
                {
                    var jsonObject = JsonDocument.Parse(message).RootElement;
                    if (IsEventEnvelope(jsonObject))
                    {
                        var kernelEventEnvelope = KernelEventEnvelope.Deserialize(jsonObject);
                        kernelEvent = kernelEventEnvelope.Event;
                    }
                    else if (IsCommandEnvelope(jsonObject))
                    {
                        var kernelCommandEnvelope = KernelCommandEnvelope.Deserialize(jsonObject);
                        kernelCommand = kernelCommandEnvelope.Command;
                    }
                    else
                    {
                        kernelEvent = new DiagnosticLogEntryProduced(
                            $"Expected {nameof(KernelCommandEnvelope)} or {nameof(KernelEventEnvelope)} but received: \n{message}", KernelCommand.None);
                        isParseError = true;
                    }
                }
                catch (Exception ex)
                {
                    kernelEvent = new DiagnosticLogEntryProduced(
                        $"Error while parsing Envelope: {message} \n{ex.Message}", KernelCommand.None);
                    isParseError = true;
                }

                yield return(kernelCommand is null ? new CommandOrEvent(kernelEvent, isParseError) : new CommandOrEvent(kernelCommand));
            }
        }
示例#4
0
        protected override async Task <CommandOrEvent> ReadCommandOrEventAsync(CancellationToken cancellationToken)
        {
            KernelCommand kernelCommand = null;
            KernelEvent   kernelEvent   = null;

            var message = await ReadMessageAsync(cancellationToken);

            if (string.IsNullOrWhiteSpace(message))
            {
                return(null);
            }

            var isParseError = false;

            try
            {
                var jsonObject = JsonDocument.Parse(message).RootElement;
                if (IsEventEnvelope(jsonObject))
                {
                    var kernelEventEnvelope = KernelEventEnvelope.Deserialize(jsonObject);
                    kernelEvent = kernelEventEnvelope.Event;
                }
                else if (IsCommandEnvelope(jsonObject))
                {
                    var kernelCommandEnvelope = KernelCommandEnvelope.Deserialize(jsonObject);
                    kernelCommand = kernelCommandEnvelope.Command;
                }
                else
                {
                    kernelEvent = new DiagnosticLogEntryProduced(
                        $"Expected {nameof(KernelCommandEnvelope)} or {nameof(KernelEventEnvelope)} but received: \n{message}", KernelCommand.None);
                    isParseError = true;
                }
            }
            catch (Exception ex)
            {
                kernelEvent = new DiagnosticLogEntryProduced(
                    $"Error while parsing Envelope: {message} \n{ex.Message}", KernelCommand.None);
                isParseError = true;
            }

            return(kernelCommand is null ? new CommandOrEvent(kernelEvent, isParseError) : new CommandOrEvent(kernelCommand));
        }
示例#5
0
        private void DeserializeAndSendEvent(string line)
        {
            IKernelEventEnvelope kernelEventEnvelope = null;

            try
            {
                kernelEventEnvelope = KernelEventEnvelope.Deserialize(line);
            }
            catch (Exception ex)
            {
                var diagnosticEvent = new DiagnosticLogEntryProduced(
                    $"Error while parsing command: {ex.Message}\n{line}", KernelCommand.None);

                _kernelEvents.OnNext(diagnosticEvent);
            }

            if (kernelEventEnvelope is not null)
            {
                _kernelEvents.OnNext(kernelEventEnvelope.Event);
            }
        }