private void StartIdleMonitor() { StopIdleMonitor(); _IdleMonitor = new IdleMonitor(View.Options.IdleTimeOut); _IdleMonitor.IdleTimeout += new EventHandler(_IdleMonitor_IdleTimeout); _IdleMonitor.Start(); }
public void GivenIdlingWhenCheckingThenTotalAlwaysIncreases() { var last = 10u; var mockReporter = new Mock <IIdlingReporter>(); var monitor = new IdleMonitor(mockReporter.Object); mockReporter .Setup(r => r.GetIdleTime()) .Returns(() => { var cached = last; last += 10u; return(cached); }); var values = RunMonitor(monitor); var total = 0ul; foreach (var reportedTotal in values) { Assert.IsTrue(reportedTotal >= total, "Total should always be increasing when idling."); total = reportedTotal; } }
private void StopIdleMonitor() { if (_IdleMonitor != null) { _IdleMonitor.IdleTimeout -= _IdleMonitor_IdleTimeout; _IdleMonitor.Stop(); _IdleMonitor.Dispose(); _IdleMonitor = null; } }
private void StartIdleMonitor() { if (_BackgroundCount != 0) { return; } StopIdleMonitor(); _IdleMonitor = new IdleMonitor(Math.Max(View.Options.IdleTimeOut, 30)); _IdleMonitor.IdleTimeout += new EventHandler(_IdleMonitor_IdleTimeout); _IdleMonitor.Start(); }
public void GivenActivityWhenCheckingThenTotalShouldNotIncrease() { var mockReporter = new Mock <IIdlingReporter>(); var monitor = new IdleMonitor(mockReporter.Object); mockReporter .Setup(r => r.GetIdleTime()) .Returns(0u); var values = RunMonitor(monitor); foreach (var reportedTotal in values) { Assert.IsTrue(reportedTotal == 0ul, "Total should always be zero when always active."); } }
/// <summary> /// Creates a new SelfOptimizingDynamicSpatialIndex. /// </summary> /// <param name="geoFactory">An <see cref="IGeometryFactory"/> instance.</param> /// <param name="restructureStrategy">The strategy used to restructure the index.</param> /// <param name="restructureHeuristic">The heuristic to control when the index is restructured.</param> /// <param name="insertStrategy">The strategy used to insert entries into the index.</param> /// <param name="nodeSplitStrategy">The strategy used to split index nodes.</param> /// <param name="indexHeuristic">A heuristic used to balance the index for optimum efficiency.</param> /// <param name="idleMonitor">A monitor to determine idle conditions on the executing machine.</param> public SelfOptimizingDynamicSpatialIndex(IGeometryFactory geoFactory, IIndexRestructureStrategy <IExtents, TItem> restructureStrategy, RestructuringHuristic restructureHeuristic, IItemInsertStrategy <IExtents, TItem> insertStrategy, INodeSplitStrategy <IExtents, TItem> nodeSplitStrategy, DynamicRTreeBalanceHeuristic indexHeuristic, IdleMonitor idleMonitor) : base(geoFactory, insertStrategy, nodeSplitStrategy, indexHeuristic) { _periodMilliseconds = restructureHeuristic.WhenToRestructure == RestructureOpportunity.Periodic ? (Int32)(restructureHeuristic.Period / 1000.0) : -1; _restructureStrategy = restructureStrategy; _restructuringHeuristic = restructureHeuristic; _idleMonitor = idleMonitor; _userIdleEvent = new AutoResetEvent(false); _machineIdleEvent = new AutoResetEvent(false); _terminateEvent = new ManualResetEvent(false); if (restructureHeuristic.WhenToRestructure != RestructureOpportunity.None) { _restructureThread = new Thread(doRestructure); _restructureThread.Start(); } RestructureOpportunity idle = RestructureOpportunity.OnMachineIdle | RestructureOpportunity.OnUserIdle; if (((Int32)(restructureHeuristic.WhenToRestructure & idle)) > 0) { if (_idleMonitor == null) { throw new ArgumentNullException("idleMonitor", "If the restructuring heuristic has a value of anything but " + "None for WhenToRestructure, the idleMonitor cannot be null."); } _idleMonitor.UserIdle += _idleMonitor_UserIdle; _idleMonitor.UserBusy += _idleMonitor_UserBusy; _idleMonitor.MachineIdle += _idleMonitor_MachineIdle; _idleMonitor.MachineBusy += _idleMonitor_MachineBusy; } }
public void WhenCreatingThenTotalIsZero() { var monitor = new IdleMonitor(null); Assert.AreEqual(0ul, monitor.Total, "Unexpected total - should be zero on creation."); }