// // Copyright (c) 2010-2018 Antmicro // // This file is licensed under the MIT License. // Full license text is available in 'licenses/MIT.txt'. // using System; using Antmicro.Renode.Utilities; namespace Antmicro.Renode.Time { /// /// Represents an object that is aware of time flow. /// public interface ITimeSink { /// /// Gets or sets handle used to synchronize time. /// TimeHandle TimeHandle { get; set; } } public static class TimeSinkExtensions { public static IDisposable ObtainSinkActiveState(this ITimeSink @this) { var result = new DisposableWrapper(); @this.TimeHandle.SinkSideActive = true; result.RegisterDisposeAction(() => @this.TimeHandle.SinkSideActive = false); return result; } public static IDisposable ObtainSinkInactiveState(this ITimeSink @this) { var result = new DisposableWrapper(); @this.TimeHandle.SinkSideActive = false; result.RegisterDisposeAction(() => @this.TimeHandle.SinkSideActive = true); return result; } } }