using System;
namespace MediaBrowser.Common.Progress
{
    /// 
    /// Class ActionableProgress
    /// 
    /// 
    public class ActionableProgress : IProgress
    {
        /// 
        /// The _actions
        /// 
        private Action _action;
        public event EventHandler ProgressChanged;
        /// 
        /// Registers the action.
        /// 
        /// The action.
        public void RegisterAction(Action action)
        {
            _action = action;
        }
        public void Report(T value)
        {
            if (ProgressChanged != null)
            {
                ProgressChanged(this, value);
            }
            var action = _action;
            if (action != null)
            {
                action(value);
            }
        }
    }
    public class SimpleProgress : IProgress
    {
        public event EventHandler ProgressChanged;
        public void Report(T value)
        {
            if (ProgressChanged != null)
            {
                ProgressChanged(this, value);
            }
        }
    }
}