Exemplo n.º 1
0
 private static DateRange GetAvailableDateRangeHelper(IMessage first, IMessage last)
 {
     if (first == null || last == null)
     {
         return(DateRange.MakeEmpty());
     }
     try
     {
         return(DateRange.MakeFromBoundaryValues(first.Time.ToLocalDateTime(), last.Time.ToLocalDateTime()));
     }
     catch (DateRangeArgumentException e)
     {
         throw new BadBoundaryDatesException("Bad boundary dates", e);
     }
 }
        void UpdateLoadedTimeStats(IPositionedMessagesReader reader)
        {
            MessagesContainers.RangesManagingCollection tmp = buffer;

            tracer.Info("Current messages: {0}", tmp);

            long bytesCount = 0;

            foreach (MessagesContainers.MessagesRange lr in tmp.Ranges)
            {
                bytesCount += reader.PositionRangeToBytes(lr.LoadedRange);
            }

            DateRange loadedTime;
            int       c = tmp.Count;

            if (c != 0)
            {
                DateTime begin = new DateTime();
                DateTime end   = new DateTime();
                foreach (IndexedMessage l in tmp.Forward(0, 1))
                {
                    tracer.Info("First message: {0}, {1}", l.Message.Time, l.Message.Text);
                    begin = l.Message.Time.ToLocalDateTime();
                }
                foreach (IndexedMessage l in tmp.Reverse(c - 1, c - 2))
                {
                    tracer.Info("Last message: {0}, {1}", l.Message.Time, l.Message.Text);
                    end = l.Message.Time.ToLocalDateTime();
                }
                loadedTime = DateRange.MakeFromBoundaryValues(begin, end);
            }
            else
            {
                loadedTime = DateRange.MakeEmpty();
            }

            tracer.Info("Calculated statistics: LoadedTime={0}, BytesLoaded={1}", loadedTime, bytesCount);

            owner.StatsTransaction(stats =>
            {
                stats.LoadedTime  = loadedTime;
                stats.LoadedBytes = bytesCount;
                return(LogProviderStatsFlag.CachedTime | LogProviderStatsFlag.BytesCount);
            });
        }
Exemplo n.º 3
0
        void InvalidateMessages()
        {
            if (IsDisposed)
            {
                return;
            }

            messagesCacheBackbuffer.InvalidateMessages();
            Interlocked.Exchange(ref cache, null);
            dateBoundsCache.Invalidate();

            StatsTransaction(stats =>
            {
                stats.LoadedBytes   = 0;
                stats.LoadedTime    = DateRange.MakeEmpty();
                stats.MessagesCount = 0;
                stats.FirstMessageWithTimeConstraintViolation = null;
                return(LogProviderStatsFlag.CachedTime | LogProviderStatsFlag.BytesCount |
                       LogProviderStatsFlag.CachedMessagesCount | LogProviderStatsFlag.FirstMessageWithTimeConstraintViolation);
            });
        }