20 lines
1,020 B
C#
20 lines
1,020 B
C#
|
|
// Copyright (c) The Geekeey Authors
|
||
|
|
// SPDX-License-Identifier: EUPL-1.2
|
||
|
|
|
||
|
|
namespace Geekeey.Request.Dispatcher;
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// Defines a strategy for publishing notifications to registered handlers.
|
||
|
|
/// </summary>
|
||
|
|
public interface INotificationPublisher
|
||
|
|
{
|
||
|
|
/// <summary>
|
||
|
|
/// Publishes the specified notification to the given collection of handlers.
|
||
|
|
/// </summary>
|
||
|
|
/// <typeparam name="TNotification">The type of notification being published. Must implement <see cref="INotification"/>.</typeparam>
|
||
|
|
/// <param name="handlers">The list of handlers to invoke.</param>
|
||
|
|
/// <param name="notification">The notification instance to publish.</param>
|
||
|
|
/// <param name="cancellationToken">A token to monitor for cancellation requests.</param>
|
||
|
|
/// <returns>A task representing the asynchronous publish operation.</returns>
|
||
|
|
Task PublishAsync<TNotification>(IEnumerable<INotificationHandler<TNotification>> handlers, TNotification notification, CancellationToken cancellationToken) where TNotification : INotification;
|
||
|
|
}
|