Example #1
0
 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
                 {
                 }
             }
         }
     }
 }
Example #2
0
        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;
            }
        }
Example #3
0
 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);
     }
 }
Example #4
0
        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);
                    }
                }
            }
        }
Example #5
0
        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);
        }
Example #6
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;
     }
 }