Ejemplo n.º 1
0
 private WebEventData(int browserRendererId, ulong eventHandlerId, EventFieldInfo eventFieldInfo, EventArgs eventArgs)
 {
     BrowserRendererId = browserRendererId;
     EventHandlerId    = eventHandlerId;
     EventFieldInfo    = eventFieldInfo;
     EventArgs         = eventArgs;
 }
Ejemplo n.º 2
0
        /// <inheritdoc/>
        public new Task DispatchEventAsync(ulong eventHandlerId, EventFieldInfo fieldInfo, EventArgs eventArgs)
        {
            if (fieldInfo is null)
            {
                throw new ArgumentNullException(nameof(fieldInfo));
            }
            _logger.LogDebug(new EventId(1, nameof(DispatchEventAsync)), $"Starting trigger of '{fieldInfo.FieldValue}'");

            var task = Dispatcher.InvokeAsync(() =>
            {
                try
                {
                    return(base.DispatchEventAsync(eventHandlerId, fieldInfo, eventArgs));
                }
                catch (Exception e)
                {
                    _unhandledException = e;
                    throw;
                }
            });

            AssertNoSynchronousErrors();

            _logger.LogDebug(new EventId(1, nameof(DispatchEventAsync)), $"Finished trigger of '{fieldInfo.FieldValue}'");
            return(task);
        }
Ejemplo n.º 3
0
        private static EventFieldInfo InterpretEventFieldInfo(EventFieldInfo fieldInfo)
        {
            // The incoming field value can be either a bool or a string, but since the .NET property
            // type is 'object', it will deserialize initially as a JsonElement
            if (fieldInfo?.FieldValue is JsonElement attributeValueJsonElement)
            {
                switch (attributeValueJsonElement.ValueKind)
                {
                case JsonValueKind.True:
                case JsonValueKind.False:
                    return(new EventFieldInfo
                    {
                        ComponentId = fieldInfo.ComponentId,
                        FieldValue = attributeValueJsonElement.GetBoolean()
                    });

                default:
                    return(new EventFieldInfo
                    {
                        ComponentId = fieldInfo.ComponentId,
                        FieldValue = attributeValueJsonElement.GetString()
                    });
                }
            }

            return(null);
        }
Ejemplo n.º 4
0
        private static EventFieldInfo?ReadEventFieldInfo(JsonElement jsonElement)
        {
            if (jsonElement.ValueKind is JsonValueKind.Null)
            {
                return(null);
            }

            var eventFieldInfo = new EventFieldInfo();

            foreach (var property in jsonElement.EnumerateObject())
            {
                if (property.NameEquals(ComponentIdKey.EncodedUtf8Bytes))
                {
                    eventFieldInfo.ComponentId = property.Value.GetInt32();
                }
                else if (property.NameEquals(FieldValueKey.EncodedUtf8Bytes))
                {
                    if (property.Value.ValueKind is JsonValueKind.True or JsonValueKind.False)
                    {
                        eventFieldInfo.FieldValue = property.Value.GetBoolean();
                    }
                    else
                    {
                        eventFieldInfo.FieldValue = property.Value.GetString() !;
                    }
                }
Ejemplo n.º 5
0
        public new Task DispatchEventAsync(ulong eventHandlerId, EventFieldInfo fieldInfo, EventArgs eventArgs)
        {
            var task = Dispatcher.InvokeAsync(
                () => base.DispatchEventAsync(eventHandlerId, fieldInfo, eventArgs));

            AssertNoSynchronousErrors();
            return(task);
        }
        /// <inheritdoc/>
        public new Task DispatchEventAsync(ulong eventHandlerId, EventFieldInfo fieldInfo, EventArgs eventArgs)
        {
            var task = Dispatcher.InvokeAsync(() =>
            {
                try
                {
                    base.DispatchEventAsync(eventHandlerId, fieldInfo, eventArgs);
                }
                catch (Exception e)
                {
                    _unhandledException = e;
                    throw;
                }
            });

            AssertNoSynchronousErrors();
            return(task);
        }
        public Task DispatchEvent(dynamic eventDescriptor, string eventArgsJson)
        {
            EventFieldInfo fieldInfo       = null;
            var            sourceFieldInfo = eventDescriptor.eventFieldInfo;

            if (sourceFieldInfo != null)
            {
                fieldInfo = new EventFieldInfo
                {
                    ComponentId = (int)eventDescriptor.eventFieldInfo.componentId,
                    FieldValue  = eventDescriptor.eventFieldInfo.fieldValue
                };
            }
            return(DispatchEventOriginal(new WebEventDescriptor
            {
                // TODO DM 26.08.2019: Replace those casts once we support proper number handling
                BrowserRendererId = (int)eventDescriptor.browserRendererId,
                EventHandlerId = (ulong)eventDescriptor.eventHandlerId,
                EventArgsType = eventDescriptor.eventArgsType,
                EventFieldInfo = fieldInfo
            },
                                         eventArgsJson));
        }
Ejemplo n.º 8
0
 public new Task DispatchEventAsync(int eventHandlerId, EventFieldInfo eventFieldInfo, UIEventArgs args)
 => InvokeAsync(() => base.DispatchEventAsync(eventHandlerId, eventFieldInfo, args));
Ejemplo n.º 9
0
 public new Task DispatchEventAsync(ulong eventHandlerId, EventFieldInfo eventFieldInfo, EventArgs args)
 => Dispatcher.InvokeAsync(() => base.DispatchEventAsync(eventHandlerId, eventFieldInfo, args));