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));
        }
        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));
        }
Пример #3
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));
        }