private void LoadAnalyticsData() { if (File.Exists(this.FileName)) { using (FileStream input = new FileStream(this.FileName, FileMode.Open)) { using (BinaryReader binaryReader = new BinaryReader(input)) { try { int num = binaryReader.ReadInt32(); for (int i = 0; i < num; i++) { string key = binaryReader.ReadString(); AnalyticsDataType dataType = (AnalyticsDataType)binaryReader.ReadByte(); Type type = this.FromDataType(dataType); AnalyticsCollection analyticsCollection = this.FindTable(key, dataType, true); analyticsCollection.Load(binaryReader); } } catch { } } } } }
private void RegisterEvent(string key, long timestamp, object obj, Type type) { AnalyticsDataType dataType = this.FromType(type); AnalyticsCollection analyticsCollection = this.FindTable(key, dataType, true); lock (analyticsCollection) { analyticsCollection.Add(timestamp, obj); this.changed = true; } }
private AnalyticsCollection FindTable(string key, AnalyticsDataType dataType, bool canCreate) { lock (this._collections) { AnalyticsCollection analyticsCollection = null; if (this._collections.ContainsKey(key)) { analyticsCollection = this._collections[key]; } if (analyticsCollection == null & canCreate) { analyticsCollection = new AnalyticsCollection(key, dataType); this._collections[key] = analyticsCollection; } return(analyticsCollection); } }
public void IterateEntries <T>(string key, Action <DateTime, T> visitor) { Type typeFromHandle = typeof(T); AnalyticsDataType dataType = this.FromType(typeFromHandle); AnalyticsCollection analyticsCollection = this.FindTable(key, dataType, false); if (analyticsCollection != null) { lock (analyticsCollection) { foreach (KeyValuePair <long, object> value in analyticsCollection.values) { visitor(value.Key.ToDateTime(), (T)value.Value); } } } }
public int GetAmmount(string key, AnalyticsFrequency frequency, DateTime date) { if (this._collections.ContainsKey(key)) { AnalyticsCollection analyticsCollection = this._collections[key]; switch (frequency) { case AnalyticsFrequency.Daily: { date = date.FixedDay(); long key3 = date.ToTimestamp(); if (analyticsCollection.dayAggregate.ContainsKey(key3)) { return(analyticsCollection.dayAggregate[key3]); } return(0); } case AnalyticsFrequency.Monthly: { date = date.FixedMonth(); long key4 = date.ToTimestamp(); if (analyticsCollection.monthAggregate.ContainsKey(key4)) { return(analyticsCollection.monthAggregate[key4]); } return(0); } case AnalyticsFrequency.Yearly: { date = date.FixedYear(); long key2 = date.ToTimestamp(); if (analyticsCollection.yearAggregate.ContainsKey(key2)) { return(analyticsCollection.yearAggregate[key2]); } return(0); } } } return(0); }
private void SaveAnalyticsData() { lock (this) { using (FileStream output = new FileStream(this.FileName, FileMode.Create)) { using (BinaryWriter binaryWriter = new BinaryWriter(output)) { int count = this._collections.Count; binaryWriter.Write(count); foreach (KeyValuePair <string, AnalyticsCollection> collection in this._collections) { binaryWriter.Write(collection.Key); AnalyticsCollection value = collection.Value; binaryWriter.Write((byte)value.dataType); value.Save(binaryWriter); } } } this.changed = false; } }