// // // // // $Revision$ // using System; using System.Collections.Generic; using System.Runtime.Serialization; namespace ICSharpCode.UsageDataCollector { [DataContract] sealed class UsageDataMessage { [DataMember] public Guid UserID; [DataMember] public List Sessions = new List(); public UsageDataSession FindSession(long sessionID) { foreach (UsageDataSession s in Sessions) { if (s.SessionID == sessionID) return s; } throw new ArgumentException("Session not found."); } } [DataContract] sealed class UsageDataSession { [DataMember] public long SessionID; [DataMember] public DateTime StartTime; [DataMember] public DateTime? EndTime; [DataMember] public List EnvironmentProperties = new List(); [DataMember] public List FeatureUses = new List(); [DataMember] public List Exceptions = new List(); } [DataContract] sealed class UsageDataEnvironmentProperty { [DataMember] public string Name; [DataMember] public string Value; } [DataContract] sealed class UsageDataFeatureUse { [DataMember] public DateTime Time; [DataMember] public DateTime? EndTime; [DataMember] public string FeatureName; [DataMember] public string ActivationMethod; } [DataContract] sealed class UsageDataException { [DataMember] public DateTime Time; [DataMember] public string ExceptionType; [DataMember] public string StackTrace; } }