28 lines
1.3 KiB
C#
28 lines
1.3 KiB
C#
|
|
// Copyright (c) The Geekeey Authors
|
||
|
|
// SPDX-License-Identifier: EUPL-1.2
|
||
|
|
|
||
|
|
namespace Geekeey.Request.Dispatcher;
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// Defines functionality to dispatch requests to their corresponding handlers.
|
||
|
|
/// </summary>
|
||
|
|
public interface IRequestDispatcher
|
||
|
|
{
|
||
|
|
/// <summary>
|
||
|
|
/// Asynchronously send a request to a handler producing a scalar value.
|
||
|
|
/// </summary>
|
||
|
|
/// <param name="request">Request object</param>
|
||
|
|
/// <param name="cancellationToken">Optional cancellation token</param>
|
||
|
|
/// <typeparam name="TResponse">Response type</typeparam>
|
||
|
|
/// <returns>A task that represents the send operation. The task result contains the handler response</returns>
|
||
|
|
Task<TResponse> DispatchAsync<TResponse>(IScalarRequest<TResponse> request, CancellationToken cancellationToken = default);
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// Asynchronously send a request to a handler producing a stream value.
|
||
|
|
/// </summary>
|
||
|
|
/// <param name="request">Request object</param>
|
||
|
|
/// <param name="cancellationToken">Optional cancellation token</param>
|
||
|
|
/// <typeparam name="TResponse">Response type</typeparam>
|
||
|
|
/// <returns>The created async enumerable, representing the stream of responses.</returns>
|
||
|
|
IAsyncEnumerable<TResponse> DispatchAsync<TResponse>(IStreamRequest<TResponse> request, CancellationToken cancellationToken = default);
|
||
|
|
}
|