void StateInspector.IEventsVisitor.Visit(StateInspector.PropertyChange propertyChange) { if (inspectedObjectsFilter(propertyChange)) { InspectedObject inspectedObject = EnsureInspectedObjectExists(propertyChange); if (propertyChange.ObjectType.PrimaryPropertyName != null && propertyChange.ObjectType.PrimaryPropertyName == propertyChange.PropertyName) { inspectedObject.Milestones.Add(new Timeline.ObjectLifetimeEvent( propertyChange.Trigger, string.Format("{0}.{1}->{2}", propertyChange.ObjectId, propertyChange.PropertyName, propertyChange.Value), propertyChange.ObjectId, ActivityEventType.Milestone )); } inspectedObject.Tags.UnionWith(propertyChange.Tags); if (propertyChange.ObjectType.DisplayIdPropertyName != null && inspectedObject.DisplayId == null && propertyChange.ObjectType.DisplayIdPropertyName == propertyChange.PropertyName) { if (propertyChange.ValueType == SI.ValueType.UserHash) { inspectedObject.DisplayId = string.Format("<uh>{0}</uh>", propertyChange.Value); } else { inspectedObject.DisplayId = propertyChange.Value; } inspectedObject.YieldPendingEvents(resultEvents); } } }
void StateInspector.IEventsVisitor.Visit(StateInspector.ObjectDeletion objectDeletion) { if (inspectedObjectsFilter(objectDeletion)) { InspectedObject inspectedObject = EnsureInspectedObjectExists(objectDeletion); inspectedObjects.Remove(objectDeletion.ObjectId); inspectedObject.YieldPendingEvents(resultEvents); resultEvents.Enqueue(inspectedObject.AddTags(new Timeline.ObjectLifetimeEvent( objectDeletion.Trigger, inspectedObject.MakeActivityDisplayName(), inspectedObject.Id, ActivityEventType.End))); } }