public IEnumerable <Event> Deserialize(XElement root) { foreach (var elt in root.Elements()) { Event ret = null; switch (elt.Name.LocalName) { case SC.Elt_Procedure: ret = new ProcedureEvent( MakeTrigger(elt), Attr(elt, SC.Attr_DisplayName), Attr(elt, SC.Attr_ActivityId), ActivityEventType(elt, SC.Attr_Type)); break; case SC.Elt_Lifetime: ret = new ObjectLifetimeEvent( MakeTrigger(elt), Attr(elt, SC.Attr_DisplayName), Attr(elt, SC.Attr_ActivityId), ActivityEventType(elt, SC.Attr_Type)); break; case SC.Elt_NetworkMessage: ret = new NetworkMessageEvent( MakeTrigger(elt), Attr(elt, SC.Attr_DisplayName), Attr(elt, SC.Attr_ActivityId), ActivityEventType(elt, SC.Attr_Type), NetworkMessageDirection(elt, SC.Attr_Direction), status: Status(elt, SC.Attr_Status)); break; case SC.Elt_UserAction: ret = new UserActionEvent( MakeTrigger(elt), Attr(elt, SC.Attr_DisplayName)); break; case SC.Elt_APICall: ret = new APICallEvent( MakeTrigger(elt), Attr(elt, SC.Attr_DisplayName)); break; case SC.Elt_EOF: ret = new EndOfTimelineEvent( MakeTrigger(elt), Attr(elt, SC.Attr_DisplayName)); break; } if (ret != null) { ret.Tags = tagsPool.Intern( new HashSet <string>((Attr(elt, SC.Attr_Tags) ?? "").Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries))); ReadPhases(elt, ret); yield return(ret); } } }
void IEventsVisitor.Visit(APICallEvent evt) { Output.AppendFormat("APICall: {0}", evt.DisplayName); }
void IEventsVisitor.Visit(APICallEvent evt) { CreateEventElement(evt, SC.Elt_APICall); }