wabbajack/Wabbajack.Lib/IBatchProcessor.cs

48 lines
1.7 KiB
C#
Raw Normal View History

using System;
using System.Threading.Tasks;
using Wabbajack.Common;
namespace Wabbajack.Lib
{
/// <summary>
/// Wabbajack runs mostly as a batch processor of sorts, we have a list of tasks we need to perform
/// and the Compilers/Installers run throught those tasks one at a time. At any given moment the processor
/// will be using multiple threads to complete that task. This interface defines a common implementation of
/// all reporting functionality of both the compilers and installers.
///
/// These processors are disposible because they contain WorkQueues which must be properly shutdown to keep
/// from leaking threads.
/// </summary>
public interface IBatchProcessor : IDisposable
{
/// <summary>
/// The current progress of the entire processing system on a scale of 0.0 to 1.0
/// </summary>
IObservable<float> PercentCompleted { get; }
/// <summary>
/// The current status of the processor as a text string
/// </summary>
IObservable<string> TextStatus { get; }
/// <summary>
/// The status of the processor's work queue
/// </summary>
IObservable<CPUStatus> QueueStatus { get; }
IObservable<bool> IsRunning { get; }
/// <summary>
/// Begin processing
/// </summary>
Task<bool> Begin();
/// <summary>
/// Terminate any processing currently in progress by the processor. The processor should be disposed of
/// after calling this function as processing cannot be resumed and the tasks may be half completed.
/// Should only be called while IsRunning = true;
/// </summary>
void Terminate();
}
}