Skip to content

Commit

Permalink
QueueAsynProcessor comments translated to English
Browse files Browse the repository at this point in the history
  • Loading branch information
ikopylov committed Apr 25, 2017
1 parent 972e72c commit 47ec57c
Show file tree
Hide file tree
Showing 3 changed files with 187 additions and 181 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,13 @@
namespace Qoollo.Turbo.Threading.QueueProcessing
{
/// <summary>
/// Асинхронная обработка на делегатах.
/// Лучше не использовать, а самостоятельно наследоваться от QueueAsyncProcessor
/// Asynchronous items processor with queue. Concrete processing action passed as delegate.
/// </summary>
/// <typeparam name="T">Тип обрабатываемого элемента</typeparam>
/// <typeparam name="T">Type of the elements processed by this <see cref="DelegateQueueAsyncProcessor{T}"/></typeparam>
public class DelegateQueueAsyncProcessor<T> : QueueAsyncProcessor<T>
{
/// <summary>
/// Контракты
/// Code contracts
/// </summary>
[ContractInvariantMethod]
private void Invariant()
Expand All @@ -29,94 +28,95 @@ private void Invariant()


/// <summary>
/// Конструктор DelegateQueueAsyncProcessor
/// DelegateQueueAsyncProcessor constructor
/// </summary>
/// <param name="processorCount">Число потоков</param>
/// <param name="maxQueueSize">Максимальный размер очереди</param>
/// <param name="name">Имя для потоков</param>
/// <param name="isBackground">Будут ли потоки работать в фоновом режиме</param>
/// <param name="processing">Делегат обработки элементов</param>
/// <param name="exceptionAct">Делегат обработки исключений</param>
/// <param name="processorCount">Number of processing threads</param>
/// <param name="maxQueueSize">The bounded size of the queue (if less or equeal to 0 then no limitation)</param>
/// <param name="name">The name for this instance of <see cref="QueueAsyncProcessor{T}"/> and its threads</param>
/// <param name="isBackground">Whether or not processing threads are background threads</param>
/// <param name="processing">Delegate that will be invoked to process every item</param>
/// <param name="exceptionAct">Delegate that will be invoked to process unhandled exception (null is possible value)</param>
public DelegateQueueAsyncProcessor(int processorCount, int maxQueueSize, string name, bool isBackground, Action<T, CancellationToken> processing, Action<Exception> exceptionAct)
: base(processorCount, maxQueueSize, name, isBackground)
{
Contract.Requires<ArgumentNullException>(processing != null, "processing");
if (processing == null)
throw new ArgumentNullException(nameof(processing));

_processing = processing;
_exceptionProc = exceptionAct;
}
/// <summary>
/// Конструктор DelegateQueueAsyncProcessor
/// DelegateQueueAsyncProcessor constructor
/// </summary>
/// <param name="processorCount">Число потоков</param>
/// <param name="maxQueueSize">Максимальный размер очереди</param>
/// <param name="name">Имя для потоков</param>
/// <param name="processing">Делегат обработки элементов</param>
/// <param name="exceptionAct">Делегат обработки исключений</param>
/// <param name="processorCount">Number of processing threads</param>
/// <param name="maxQueueSize">The bounded size of the queue (if less or equeal to 0 then no limitation)</param>
/// <param name="name">The name for this instance of <see cref="QueueAsyncProcessor{T}"/> and its threads</param>
/// <param name="processing">Delegate that will be invoked to process every item</param>
/// <param name="exceptionAct">Delegate that will be invoked to process unhandled exception (null is possible value)</param>
public DelegateQueueAsyncProcessor(int processorCount, int maxQueueSize, string name, Action<T, CancellationToken> processing, Action<Exception> exceptionAct)
: this(processorCount, maxQueueSize, name, false, processing, exceptionAct)
{
}
/// <summary>
/// Конструктор DelegateQueueAsyncProcessor
/// DelegateQueueAsyncProcessor constructor
/// </summary>
/// <param name="processorCount">Число потоков</param>
/// <param name="maxQueueSize">Максимальный размер очереди</param>
/// <param name="name">Имя для потоков</param>
/// <param name="processing">Делегат обработки элементов</param>
/// <param name="processorCount">Number of processing threads</param>
/// <param name="maxQueueSize">The bounded size of the queue (if less or equeal to 0 then no limitation)</param>
/// <param name="name">The name for this instance of <see cref="QueueAsyncProcessor{T}"/> and its threads</param>
/// <param name="processing">Delegate that will be invoked to process every item</param>
public DelegateQueueAsyncProcessor(int processorCount, int maxQueueSize, string name, Action<T, CancellationToken> processing)
: this(processorCount, maxQueueSize, name, false, processing, null)
{
}
/// <summary>
/// Конструктор DelegateQueueAsyncProcessor
/// DelegateQueueAsyncProcessor constructor
/// </summary>
/// <param name="processorCount">Число потоков</param>
/// <param name="name">Имя для потоков</param>
/// <param name="processing">Делегат обработки элементов</param>
/// <param name="exceptionAct">Делегат обработки исключений</param>
/// <param name="processorCount">Number of processing threads</param>
/// <param name="name">The name for this instance of <see cref="QueueAsyncProcessor{T}"/> and its threads</param>
/// <param name="processing">Delegate that will be invoked to process every item</param>
/// <param name="exceptionAct">Delegate that will be invoked to process unhandled exception (null is possible value)</param>
public DelegateQueueAsyncProcessor(int processorCount, string name, Action<T, CancellationToken> processing, Action<Exception> exceptionAct)
: this(processorCount, -1, name, false, processing, exceptionAct)
{
}
/// <summary>
/// Конструктор DelegateQueueAsyncProcessor
/// DelegateQueueAsyncProcessor constructor
/// </summary>
/// <param name="processorCount">Число потоков</param>
/// <param name="name">Имя для потоков</param>
/// <param name="processing">Делегат обработки элементов</param>
/// <param name="processorCount">Number of processing threads</param>
/// <param name="name">The name for this instance of <see cref="QueueAsyncProcessor{T}"/> and its threads</param>
/// <param name="processing">Delegate that will be invoked to process every item</param>
public DelegateQueueAsyncProcessor(int processorCount, string name, Action<T, CancellationToken> processing)
: this(processorCount, -1, name, false, processing, null)
{
}
/// <summary>
/// Конструктор DelegateQueueAsyncProcessor
/// DelegateQueueAsyncProcessor constructor
/// </summary>
/// <param name="processorCount">Число потоков</param>
/// <param name="processing">Делегат обработки элементов</param>
/// <param name="processorCount">Number of processing threads</param>
/// <param name="processing">Delegate that will be invoked to process every item</param>
public DelegateQueueAsyncProcessor(int processorCount, Action<T, CancellationToken> processing)
: this(processorCount, -1, null, false, processing, null)
{
}

/// <summary>
/// Основной метод обработки элементов
/// Processes a single item taken from the processing queue.
/// </summary>
/// <param name="element">Элемент</param>
/// <param name="state">Объект состояния, инициализированный в методе Prepare()</param>
/// <param name="token">Токен для отмены обработки</param>
/// <param name="element">Item to be processed</param>
/// <param name="state">Thread specific state object</param>
/// <param name="token">Cancellation token that will be cancelled when the immediate stop is requested</param>
protected override void Process(T element, object state, CancellationToken token)
{
_processing(element, token);
}


/// <summary>
/// Обработка исключений.
/// Чтобы исключение было проброшено наверх, нужно выбросить новое исключение внутри метода.
/// Method that allows to process unhandled exceptions (e.g. logging).
/// Default behaviour - throws <see cref="QueueAsyncProcessorException"/>.
/// </summary>
/// <param name="ex">Исключение</param>
/// <returns>Игнорировать ли исключение (false - поток завершает работу)</returns>
/// <param name="ex">Catched exception</param>
/// <returns>Whether the current exception can be safely skipped (false - the thread will retrow the exception)</returns>
protected override bool ProcessThreadException(Exception ex)
{
if (_exceptionProc != null)
Expand Down
Loading

0 comments on commit 47ec57c

Please sign in to comment.