forked from Raiffeisen-DGTL/ViennaNET
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathIEventCollector.cs
41 lines (36 loc) · 1.37 KB
/
IEventCollector.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace ViennaNET.Mediator.Seedwork
{
/// <summary>
/// Предоставляет функционал для отложенной отправки сообщений
/// </summary>
public interface IEventCollector : IDisposable
{
/// <summary>
/// Возвращает коллекцию событий только для чтения, сохраненных для отправки
/// </summary>
IReadOnlyCollection<IEvent> Events { get; }
/// <summary>
/// Возвращает признак того, что очередь сообщений пуста
/// </summary>
bool IsEmpty { get; }
/// <summary>
/// Добавляет новое событие в очередь
/// </summary>
/// <param name="evt">Ссылка на сохраняемое событие</param>
void Enqueue<TEvent>(TEvent evt)
where TEvent : class, IEvent;
/// <summary>
/// Синхронно публикует сообщения
/// </summary>
void Publish();
/// <summary>
/// Асинхронно публикует событие
/// </summary>
/// <param name="cancellationToken"><see cref="CancellationToken"/>.</param>
Task PublishAsync(CancellationToken cancellationToken = default);
}
}