Inheritance: UsageStatisticsAggregate
Example #1
0
        public async Task<List<DomainAggregate>> GetDomainAggregateList(int maxSize, int threshold)
        {
            var retval = new List<DomainAggregate>();
            using (var cursor = await _domainStatisticsDB.SeekAsync(DBReadFlags.NoLock))
            {
                while (cursor != null)
                {
                    var agg = new DomainAggregate();
                    var currentRecord = cursor.Get();
                    agg.DomainHash = BitConverter.ToUInt32(currentRecord.Take(4).ToArray(), 0);
                    agg.LinkClicks = BitConverter.ToUInt32(currentRecord.Skip(4).Take(4).ToArray(), 0);
                    agg.CommentClicks = BitConverter.ToUInt32(currentRecord.Skip(8).Take(4).ToArray(), 0);
                    agg.LastModified = new DateTime(BitConverter.ToInt64(currentRecord.Skip(12).Take(8).ToArray(), 0));
                    if (agg.LinkClicks > threshold || agg.CommentClicks > threshold)
                        retval.Add(agg);
                    if (!await cursor.MoveNextAsync())
                        break;
                }
            }

            retval = retval.Where(p => p.CommentClicks > threshold || p.LinkClicks > threshold)
                .OrderBy(p => p.CommentClicks > p.LinkClicks ? p.CommentClicks : p.LinkClicks)
                .Take(maxSize)
                .ToList();
            return retval;
        }