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)); }
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)); }