// -----------------------------------------------------------------------
//
// TODO: Update copyright text.
//
// -----------------------------------------------------------------------
using System.Collections.Concurrent;
using System.Threading;
using System.Threading.Tasks;
namespace Pithos.Core
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
///
/// TODO: Update summary.
///
public class JobQueue
{
private readonly BlockingCollection _statusUpdateQueue = new BlockingCollection();
private CancellationToken _cancellationToken;
public void Start(CancellationToken token)
{
_cancellationToken = token;
Task.Factory.StartNew(ProcessUpdates, _cancellationToken);
}
private void ProcessUpdates()
{
foreach (var action in _statusUpdateQueue.GetConsumingEnumerable())
{
action();
}
}
public void Add(Action action)
{
_statusUpdateQueue.Add(action);
}
public void Stop()
{
_statusUpdateQueue.CompleteAdding();
}
}
}