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 NodeInfo(ILogSource logSource, NodeId nodeId, ILogPartToken logPart, IEnumerable <M.Event> messages, ISameNodeDetectionToken sameNodeDetectionToken) { LogSources = new [] { logSource }; NodeId = nodeId; LogPart = logPart; Messages = messages; SameNodeDetectionToken = sameNodeDetectionToken; }
public static void SafeWriteTo(this ILogPartToken logPartToken, XmlWriter writer) { if (logPartToken == null) { return; } var tokenElt = new XElement(rotatedLogPartTokenEltName); logPartToken.Serialize(tokenElt); tokenElt.WriteTo(writer); }
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); }
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); }
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)); }
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(); } }
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)); }
int ILogPartToken.CompareTo(ILogPartToken otherToken) { return(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); }
int ILogPartToken.CompareTo(ILogPartToken otherToken) => 0;