Пример #1
0
        private void OnValueProductionEvent(ValueProducedEventBase eventBase)
        {
            if (!InFlightRequests.TryGetValue(eventBase.GetRootCommand(), out var openRequest))
            {
                return;
            }

            var transient = CreateTransient(eventBase.ValueId);

            var formattedValues = eventBase
                                  .FormattedValues
                                  .ToDictionary(k => k.MimeType, v => v.Value);

            var value = eventBase.Value;

            CreateDefaultFormattedValueIfEmpty(formattedValues, value);

            DisplayData executeResultData;

            switch (eventBase)
            {
            case DisplayedValueProduced _:
                executeResultData = new DisplayData(
                    transient: transient,
                    data: formattedValues);
                break;

            case ReturnValueProduced _:
                executeResultData = new ExecuteResult(
                    openRequest.ExecutionCount,
                    transient: transient,
                    data: formattedValues);
                break;

            case DisplayedValueUpdated _:
                executeResultData = new UpdateDisplayData(
                    transient: transient,
                    data: formattedValues);
                break;

            default:
                throw new ArgumentException("Unsupported event type", nameof(eventBase));
            }

            SendDisplayData(executeResultData, openRequest);
        }
Пример #2
0
        private void OnValueProduced(
            ValueProducedEventBase valueProduced,
            Message request,
            IMessageSender ioPubChannel)
        {
            var transient = CreateTransient(valueProduced.ValueId);

            var formattedValues = valueProduced
                                  .FormattedValues
                                  .ToDictionary(k => k.MimeType, v => v.Value);

            var value = valueProduced.Value;

            CreateDefaultFormattedValueIfEmpty(formattedValues, value);

            JupyterMessageContent executeResultData;

            switch (valueProduced)
            {
            case DisplayedValueProduced _:
                executeResultData = new DisplayData(
                    transient: transient,
                    data: formattedValues);
                break;

            case ReturnValueProduced _:
                executeResultData = new ExecuteResult(
                    _executionCount,
                    transient: transient,
                    data: formattedValues);
                break;

            case DisplayedValueUpdated _:
                executeResultData = new UpdateDisplayData(
                    transient: transient,
                    data: formattedValues);
                break;

            default:
                throw new ArgumentException("Unsupported event type", nameof(valueProduced));
            }

            SendDisplayData(executeResultData, request, ioPubChannel);
        }