示例#1
0
        public VideoTimePeriodsPacket Search(DateTime beginTime, DateTime endTime, IVideoInfo videoInfo)
        {
            string path = GlobalData.VideoPath(videoInfo.VideoId, videoInfo.StreamId);

            DateTime[] dates            = VideoStoragerManager.GetFolderPaths(videoInfo.VideoId, videoInfo.StreamId, beginTime, endTime);
            List <TimePeriodPacket> tis = new List <TimePeriodPacket>();

            Parallel.ForEach(dates, date =>
            {
                string folder = Path.Combine(path, GlobalProcess.FolderPath(date));
                var array     = FolderManager.GetTimePeriods(folder);
                if (array.Length > 0)
                {
                    lock (tis)
                        tis.AddRange(array);
                }
            });
            if (endTime > DateTime.Now.Date)
            {
                tis.AddRange(findTodayLastest(path, endTime));
            }
            var timeCombines = TimePeriodManager.Combine(tis.ToArray());
            var validArray   = TimePeriodManager.GetIntersections(timeCombines, new TimePeriodPacket(beginTime, endTime));

            return(new VideoTimePeriodsPacket(videoInfo, validArray));
        }
示例#2
0
        public void TestTimePeriodManager_Combine_Continuous()//测试连续情况
        {
            var combine = TimePeriodManager.Combine(tis.ToArray());

            Assert.AreEqual(1, combine.Length);
            assertEqual(new TimePeriodPacket(tis.First().BeginTime, tis.Last().EndTime), combine[0]);
        }
示例#3
0
        public VideoTimePeriodsPacket GetCompletedTimePeriods()
        {
            IndexesPacket[] indexesPackets = FolderManager.GetIndexesPackets(_path);
            var             downloadedTPPs = TimePeriodManager.GetIntersections(indexesPackets, GetVideoTimePeriods()?.TimePeriods);

            return(new VideoTimePeriodsPacket(_loadInfo.Info, downloadedTPPs));
        }
示例#4
0
 public void Download(TimePeriodPacket tpp)
 {
     updateDownloaded(tpp);
     _missingTi = TimePeriodManager.Subtracts(_missingTi.ToArray(), tpp);
     updateProbeTime(ProbeTime);
     updateTicksMissing();
 }
示例#5
0
        public void Execute(IJobExecutionContext context)
        {
            var mgr = new TimePeriodManager();

            System.Console.WriteLine("Set New TimePeriod");
            mgr.AddTimeperiod();
        }
示例#6
0
        public void TestTimePeriodManager_GetIntersections()
        {
            TimePeriodPacket ti1 = new TimePeriodPacket(beginTime.AddMinutes(5), beginTime.AddMinutes(40));

            TimePeriodPacket[] results = TimePeriodManager.GetIntersections(tis.ToArray(), ti1);
            Assert.AreEqual(3, results.Length);
            TimePeriodPacket[] results2 = TimePeriodManager.GetIntersections(new TimePeriodPacket[0], ti1);
            Assert.AreEqual(0, results2.Length);
        }
示例#7
0
 static void assertSubtractsAny(TimePeriodPacket[] tis1, TimePeriodPacket ti2, params TimePeriodPacket[] tis)
 {
     TimePeriodPacket[] tiSub = TimePeriodManager.Subtracts(tis1, ti2);
     Assert.AreEqual(tis.Length, tiSub.Length);
     for (int i = 0; i < tis.Length; i++)
     {
         assertEqual(tis[i], tiSub[i]);
     }
 }
示例#8
0
        public void TestTimePeriodManager_IsValid()
        {
            TimePeriodPacket ti = new TimePeriodPacket(new DateTime(2016, 1, 1), new DateTime(2016, 3, 1));

            Assert.IsFalse(TimePeriodManager.IsValid(ti, new DateTime(2015, 1, 1)));
            Assert.IsTrue(TimePeriodManager.IsValid(ti, new DateTime(2016, 1, 1)));
            Assert.IsTrue(TimePeriodManager.IsValid(ti, new DateTime(2016, 2, 1)));
            Assert.IsFalse(TimePeriodManager.IsValid(ti, new DateTime(2016, 3, 1)));
            Assert.IsFalse(TimePeriodManager.IsValid(ti, new DateTime(2016, 5, 1)));
        }
 public void Setup()
 {
     TimePeriodManager.SetDefaultHoursPerDay(24);
     TimePeriodManager.SetFactory(
         (hour, minute, hoursPerDay) =>
         Mock.Of <ITimeOfDay>(mock =>
                              mock.Hour == hour &&
                              mock.Minute == minute &&
                              mock.HoursPerDay == hoursPerDay));
 }
        /// <summary>
        /// Applies a time zone offset to the Realm.
        /// </summary>
        /// <param name="hour">The number of hours to offset by.</param>
        /// <param name="minute">The number of minutes to offset by.</param>
        /// <exception cref="System.InvalidTimeZoneException">The time zone offset can not be applied due to the realm not being owned by a world. Worlds manage the in-game time and time periods. A world must be assigned as owner on the realm in order for any time zone interactions to take place.</exception>
        /// <para>
        /// The Hour and Minute provided will cause the Realm's timezone to be offset from
        /// the Worlds standard time-zone.
        /// </para>
        public void ApplyTimeZoneOffset(int hour, int minute)
        {
            if (this.Owner == null)
            {
                throw new InvalidTimeZoneException("The time zone offset can not be applied due to the realm not being owned by a world. Worlds manage the in-game time and time periods. A world must be assigned as owner on the realm in order for any time zone interactions to take place.");
            }

            TimePeriodManager timeManager = this.Owner.TimePeriodManager;

            this.TimeZoneOffset = timeManager.CreateTimeOfDay(hour, minute, this.Owner.HoursPerDay);
        }
示例#11
0
        public void TestTimePeriodManager_Combine_Segmentation()//测试被分段情况
        {
            tis.RemoveAt(10);
            tis.RemoveAt(20);
            var combine = TimePeriodManager.Combine(tis.ToArray());

            Assert.AreEqual(3, combine.Length);
            assertEqual(new TimePeriodPacket(beginTime, tis[9].EndTime), combine[0]);
            assertEqual(new TimePeriodPacket(tis[10].BeginTime, tis[19].EndTime), combine[1]);
            assertEqual(new TimePeriodPacket(tis[20].BeginTime, tis.Last().EndTime), combine[2]);
        }
示例#12
0
        public void TestTimePeriodManager_GetValidArray()
        {
            int validLength = tis.Count;

            Assert.AreEqual(validLength, TimePeriodManager.GetValidArray(tis.ToArray()).Length);
            tis.Add(null);
            Assert.AreEqual(validLength, TimePeriodManager.GetValidArray(tis.ToArray()).Length);
            tis.Add(new TimePeriodPacket(beginTime.AddDays(1), beginTime));
            Assert.AreEqual(validLength, TimePeriodManager.GetValidArray(tis.ToArray()).Length);
            tis.Add(new TimePeriodPacket(beginTime, beginTime.AddDays(1)));
            Assert.AreEqual(validLength + 1, TimePeriodManager.GetValidArray(tis.ToArray()).Length);
        }
示例#13
0
        static void Main(string[] args)
        {
            slrclubCrawler ilbe = new slrclubCrawler();
            var            mgr  = new TimePeriodManager();

            mgr.AddTimeperiod();

            ilbe.GetList(20, 4);
            ilbe.ParseArticles();

            Console.WriteLine(DateTime.Now + "Crawler finish the work");
        }
        public void Can_get_time_of_day_state_when_states_are_out_of_order()
        {
            // Arrange
            var manager = new TimePeriodManager(this.CreateStates());
            var time    = new DateTime(2015, 8, 2, 16, 0, 0);

            // Act
            ITimePeriod state = manager.GetTimeOfDayState(time);

            // Assert
            Assert.AreEqual(15, state.StateStartTime.Hour);
            Assert.AreEqual(0, state.StateStartTime.Minute);
        }
        public void Can_get_time_of_day_state_for_current_real_world_time_upper_limit()
        {
            // Arrange
            var manager = new TimePeriodManager(this.CreateStates());
            var time    = new DateTime(2015, 8, 2, 18, 0, 0);

            // Act
            ITimePeriod state = manager.GetTimeOfDayState(time);

            // Assert
            Assert.AreEqual(18, state.StateStartTime.Hour);
            Assert.AreEqual(0, state.StateStartTime.Minute);
        }
示例#16
0
        TimePeriodPacket[] findTodayLastest(string path, DateTime end)
        {
            string folder = Path.Combine(path, GlobalProcess.FolderPath(DateTime.Now));
            var    array  = FolderManager.GetIndexesFiles(folder);

            if (array.Length > 0)
            {
                string file    = array.Max();
                var    packets = FileManager.GetIndexesPackets(file);
                return(TimePeriodManager.Combine(packets));
            }
            return(new TimePeriodPacket[0]);
        }
示例#17
0
 private void loadRecorder()
 {
     if (_baseRec.TimePeriods != null)
     {
         try
         {
             IndexesPacket[] indexesPackets = FolderManager.GetIndexesPackets(Path);
             var             downloadedTPPs = TimePeriodManager.Combine(indexesPackets);
             initRecorder(_baseRec.TimePeriods.TimePeriods, downloadedTPPs);
         }
         catch (Exception ex) { Console.WriteLine(ex); }
     }
 }
示例#18
0
        public void TestTimePeriodManager_Intersection()
        {
            TimePeriodPacket ti1     = new TimePeriodPacket(beginTime, beginTime.AddDays(1));
            TimePeriodPacket ti2     = new TimePeriodPacket(beginTime.AddHours(1), beginTime.AddHours(2));
            TimePeriodPacket ti3     = new TimePeriodPacket(beginTime.AddHours(1), beginTime.AddDays(2));
            TimePeriodPacket ti1_3   = new TimePeriodPacket(beginTime.AddHours(1), beginTime.AddDays(1));
            TimePeriodPacket invalid = new TimePeriodPacket(beginTime.AddDays(1), beginTime);

            assertEqual(ti2, TimePeriodManager.Intersection(ti1, ti2));
            assertEqual(ti2, TimePeriodManager.Intersection(ti2, ti1));
            assertEqual(ti1_3, TimePeriodManager.Intersection(ti3, ti1));
            assertEqual(ti1_3, TimePeriodManager.Intersection(ti1, ti3));
            Assert.IsNull(TimePeriodManager.Intersection(ti1, invalid));
            Assert.IsNull(TimePeriodManager.Intersection(invalid, ti1));
        }
示例#19
0
        public void TestTimePeriodManager_GetIntersectionsArray()
        {
            List <TimePeriodPacket> tis = new List <TimePeriodPacket>();

            tis.Add(new TimePeriodPacket(beginTime, beginTime.AddMinutes(15)));
            for (int i = 0; i < 40; i++)
            {
                tis.Add(new TimePeriodPacket(tis.Last().EndTime.AddSeconds(1), tis.Last().EndTime.AddMinutes(15)));
            }

            TimePeriodPacket[] results = TimePeriodManager.GetIntersections(tis.ToArray(), new TimePeriodPacket[0]);
            Assert.AreEqual(0, results.Length);
            results = TimePeriodManager.GetIntersections(tis.ToArray(), tis.ToArray());
            Assert.AreEqual(tis.Count, results.Length);
        }
示例#20
0
 private static TimePeriodPacket[] getMissingTIs(TimePeriodPacket[] tisAll, TimePeriodPacket[] tisCompleted)
 {
     if (tisAll == null || tisAll.Length == 0)
     {
         return(new TimePeriodPacket[0]);
     }
     TimePeriodPacket[] subs = TimePeriodManager.Combine(tisAll);
     if (tisCompleted != null && tisCompleted.Length > 0)
     {
         tisCompleted = TimePeriodManager.Combine(tisCompleted);
         for (int i = 0; i < tisCompleted.Length; i++)
         {
             subs = TimePeriodManager.Subtracts(subs, tisCompleted[i]);
         }
     }
     return(subs);
 }
示例#21
0
        protected override void updateShortIndexes(TimePeriodPacket newTi)
        {
            List <TimePeriodPacket> shortIndexes = new List <TimePeriodPacket>();

            shortIndexes.Add(newTi);
            string simpleIndexesName = $"{GlobalProcess.FileNameFromDate(_fileStartTime)}{GlobalProcess.SimpleIndexesFormat()}";
            string fileName          = Path.Combine(_curFolder, simpleIndexesName);
            var    indexesDatas      = FileManager.GetTimePeriods(fileName);

            if (indexesDatas != null)
            {
                shortIndexes.AddRange(indexesDatas);
            }
            var newArray = TimePeriodManager.Combine(shortIndexes.ToArray());

            using (var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.Read))
            {
                for (int i = 0; i < newArray.Length; i++)
                {
                    writeBuffer(fs, TimePeriodPacket.Encode(newArray[i]));
                }
            }
        }
示例#22
0
 private void updateDownloaded(TimePeriodPacket tpp)
 {
     _downloadedTimePeriods.Add(tpp);
     _downloadedTimePeriods = TimePeriodManager.Combine(_downloadedTimePeriods.ToArray()).ToList();
 }
示例#23
0
 public bool IsValidTime(TimePeriodPacket timePeriod)
 {
     return(_missingTi.Any(_ => TimePeriodManager.Intersection(_, timePeriod) != null));
 }
 public void Ctor_throws_argument_null_exception_when_given_null()
 {
     // Act
     var manager = new TimePeriodManager(null);
 }
示例#25
0
 public void TestTimePeriodManager_Combine_Empty()
 {
     Assert.AreEqual(0, TimePeriodManager.Combine(null).Length);
     Assert.AreEqual(0, TimePeriodManager.Combine(new TimePeriodPacket[0]).Length);
 }