Ejemplo n.º 1
0
            public static RangeMeta operator -(RangeMeta lhs, RangeMeta rhs)
            {
                RangeMeta res = new RangeMeta();

                res.TotalLen = lhs.TotalLen - rhs.TotalLen;
                res.Cinfo    = lhs.Cinfo - rhs.Cinfo;
                return(res);
            }
Ejemplo n.º 2
0
            public static RangeMeta operator +(RangeMeta lhs, MetaPacket rhs)
            {
                RangeMeta res = new RangeMeta();

                res.TotalLen = lhs.TotalLen + rhs.Length;
                res.Cinfo    = lhs.Cinfo + rhs.Cinfo;

                return(res);
            }
Ejemplo n.º 3
0
        public RangeStatisticsInfo Query(DateTime start, DateTime end)
        {
            if (!fileLoaded)
            {
                throw new InvalidOperationException("No file has been loaded");
            }
            // Check range
            if (start < Earliest || start > Latest || end < Earliest || end > Latest)
            {
                throw new ArgumentOutOfRangeException();
            }

            int b = plist.BinarySearch(new MetaPacket
            {
                Timestamp = start
            });

            if (b < 0)
            {
                b = ~b - 1; // assert: b >= 0
            }

            int e = plist.BinarySearch(new MetaPacket
            {
                Timestamp = end
            });

            if (e < 0)
            {
                e = (~e) - 1; // assert: e >= 0
            }

            RangeMeta rm = presum[e] - presum[b];

            double seconds = (plist[e].Timestamp - plist[b].Timestamp).TotalSeconds;

            RangeStatisticsInfo info = new RangeStatisticsInfo
            {
                Duration = plist[e].Timestamp - plist[b].Timestamp,
                TotalLen = rm.TotalLen,
                TotalCnt = e - b + 1,
                CInfo    = rm.Cinfo
            };

            return(info);
        }
Ejemplo n.º 4
0
 public RangeMeta(RangeMeta other)
 {
     TotalLen = other.TotalLen;
     Cinfo    = other.Cinfo;
 }