chr
2026-04-05 fe750b791d5b517cc4e9bc8e99a9a75139a0cfba
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;
using System.Xml.Linq;
using OpenTap.Diagnostic;
 
namespace OpenTap.Plugins
{
    /// <summary> Serializer implementation for default value attributes. </summary>
    class EventsSerializerPlugin : TapSerializerPlugin
    {
        /// <summary> Deserialize an Event object. </summary>
        public override bool Deserialize(XElement node, ITypeData t, Action<object> setter)
        {
            if (t.DescendsTo(typeof(Event)) == false) return false;
            var message = node.Element("Message")?.Value;
            var source = node.Element(nameof(Event.Source))?.Value;
            long.TryParse(node.Element(nameof(Event.Timestamp))?.Value, out var timestamp);
            int.TryParse(node.Element(nameof(Event.EventType))?.Value, out var eventType);
            setter(new Event(0, eventType, message, source, timestamp));
            return true;
        }
 
        /// <summary> Serializes an Event object. </summary>
        public override bool Serialize(XElement node, object obj, ITypeData expectedType)
        {
            if ((obj is Event evt) == false)
                return false;
            node.SetElementValue(nameof(evt.Timestamp), evt.Timestamp);
            node.SetElementValue(nameof(evt.Message), evt.Message);
            node.SetElementValue(nameof(evt.Source), evt.Source);
            node.SetElementValue(nameof(evt.EventType), evt.EventType);
            return true;
        }
    }
}