public static XDocument SerializePostprocessorOutput(
            List <Event> events,
            ILogPartToken rotatedLogPartToken,
            Func <object, TextLogEventTrigger> triggersConverter,
            XAttribute contentsEtagAttr
            )
        {
            var serializer = new EventsSerializer((trigger, elt) =>
            {
                triggersConverter(trigger).Save(elt);
            });

            foreach (var e in events.OrderBy(e => ((IOrderedTrigger)e.Trigger).Index))
            {
                e.Visit(serializer);
            }
            var root = new XElement("root", serializer.Output);

            rotatedLogPartToken.SafeSerializeLogPartToken(root);
            if (contentsEtagAttr != null)
            {
                root.Add(contentsEtagAttr);
            }
            return(new XDocument(root));
        }
Exemplo n.º 2
0
 public NodeInfo(ILogSource logSource, NodeId nodeId,
                 ILogPartToken logPart, IEnumerable <M.Event> messages,
                 ISameNodeDetectionToken sameNodeDetectionToken)
 {
     LogSources             = new [] { logSource };
     NodeId                 = nodeId;
     LogPart                = logPart;
     Messages               = messages;
     SameNodeDetectionToken = sameNodeDetectionToken;
 }
Exemplo n.º 3
0
        public static void SafeWriteTo(this ILogPartToken logPartToken, XmlWriter writer)
        {
            if (logPartToken == null)
            {
                return;
            }
            var tokenElt = new XElement(rotatedLogPartTokenEltName);

            logPartToken.Serialize(tokenElt);
            tokenElt.WriteTo(writer);
        }
Exemplo n.º 4
0
        public static XElement SafeSerializeLogPartToken(this ILogPartToken logPartToken, XElement element)
        {
            if (logPartToken == null)
            {
                return(null);
            }
            var tokenElt = new XElement(rotatedLogPartTokenEltName);

            logPartToken.Serialize(tokenElt);
            element.Add(tokenElt);
            return(tokenElt);
        }
Exemplo n.º 5
0
        void ILogPartTokenFactories.SafeWriteTo(ILogPartToken logPartToken, XmlWriter writer)
        {
            if (logPartToken == null)
            {
                return;
            }
            var tokenElt = new XElement(rotatedLogPartTokenEltName);

            logPartToken.Serialize(tokenElt);
            tokenElt.SetAttributeValue(factoryAttributeName, logPartToken.Factory.Id);
            tokenElt.WriteTo(writer);
        }
Exemplo n.º 6
0
 bool ILogPartTokenFactories.TryReadLogPartToken(XElement element, out ILogPartToken token)
 {
     token = null;
     if (element != null && element.Name.LocalName == rotatedLogPartTokenEltName)
     {
         var factoryId = element.AttributeValue(factoryAttributeName);
         if (factories.TryGetValue(factoryId, out var tokenFactory))
         {
             token = tokenFactory.Deserialize(element);
         }
     }
     return(token != null);
 }
        public static XDocument SerializePostprocessorOutput(
            List <M.Event> events,
            List <TLBlock.Event> timelineComments,
            List <SIBlock.Event> stateInsectorComments,
            ILogPartToken logPartToken,
            Func <object, TextLogEventTrigger> triggersConverter,
            XAttribute contentsEtagAttr
            )
        {
            Action <object, XElement> triggerSerializer = (trigger, elt) =>
            {
                triggersConverter(trigger).Save(elt);
            };
            var messagingEventsSerializer = new M.EventsSerializer(triggerSerializer);

            foreach (var e in events)
            {
                e.Visit(messagingEventsSerializer);
            }
            var root = new XElement("root", messagingEventsSerializer.Output);

            var timelineEventsSerializer = new TLBlock.EventsSerializer(triggerSerializer);

            foreach (var e in timelineComments)
            {
                e.Visit(timelineEventsSerializer);
            }
            root.Add(new XElement("timeline-comments", timelineEventsSerializer.Output));

            var stateInspectorEventsSerializer = new SIBlock.EventsSerializer(triggerSerializer);

            foreach (var e in stateInsectorComments)
            {
                e.Visit(stateInspectorEventsSerializer);
            }
            root.Add(new XElement("state-comments", stateInspectorEventsSerializer.Output));

            logPartToken.SafeSerializeLogPartToken(root);

            if (contentsEtagAttr != null)
            {
                root.Add(contentsEtagAttr);
            }

            return(new XDocument(root));
        }
Exemplo n.º 8
0
        public PostprocessorOutput(
            LogSourcePostprocessorDeserializationParams p,
            ILogPartTokenFactories rotatedLogPartFactories,
            ISameNodeDetectionTokenFactories nodeDetectionTokenFactories)
        {
            this.logSource = p.LogSource;
            var reader = p.Reader;

            events = new List <M.Event>();
            rotatedLogPartToken    = new NullLogPartToken();
            sameNodeDetectionToken = new NullSameNodeDetectionToken();

            if (!reader.ReadToFollowing("root"))
            {
                throw new FormatException();
            }
            etag.Read(reader);

            foreach (var elt in p.Reader.ReadChildrenElements())
            {
                if (rotatedLogPartFactories.TryReadLogPartToken(elt, out var tmp))
                {
                    this.rotatedLogPartToken = tmp;
                }
                else if (nodeDetectionTokenFactories.TryReadLogPartToken(elt, out var tmp2))
                {
                    sameNodeDetectionToken = tmp2;
                }
                else if (elt.Name == messagingEventsElementName)
                {
                    var eventsDeserializer = new M.EventsDeserializer(TextLogEventTrigger.DeserializerFunction);
                    foreach (var me in elt.Elements())
                    {
                        if (eventsDeserializer.TryDeserialize(me, out var evt))
                        {
                            events.Add(evt);
                        }
                    }
                }
                p.Cancellation.ThrowIfCancellationRequested();
            }
        }
Exemplo n.º 9
0
        public static XDocument SerializePostprocessorOutput(
            List <Event> events,
            ILogPartToken rotatedLogPartToken,
            XAttribute contentsEtagAttr
            )
        {
            var serializer = new EventsSerializer((trigger, elt) => TextLogEventTrigger.FromUnknownTrigger(trigger).Save(elt));

            foreach (var e in events.OrderBy(e => ((ITriggerStreamPosition)e.Trigger).StreamPosition))
            {
                e.Visit(serializer);
            }
            var root = new XElement("root", serializer.Output);

            rotatedLogPartToken.SafeSerializeLogPartToken(root);
            if (contentsEtagAttr != null)
            {
                root.Add(contentsEtagAttr);
            }
            return(new XDocument(root));
        }
Exemplo n.º 10
0
 int ILogPartToken.CompareTo(ILogPartToken otherToken)
 {
     return(0);
 }
Exemplo n.º 11
0
 public static bool TryReadLogPartToken(this ILogPartTokenFactory rotatedLogPartFactory, XElement element, out ILogPartToken token)
 {
     token = null;
     if (rotatedLogPartFactory != null && element != null && element.Name.LocalName == rotatedLogPartTokenEltName)
     {
         token = rotatedLogPartFactory.TryDeserialize(element);
     }
     return(token != null);
 }
Exemplo n.º 12
0
 int ILogPartToken.CompareTo(ILogPartToken otherToken) => 0;