Class MessageAggregator<TResponse, TResult>
- Namespace
- DotCompute.Core.Messaging
- Assembly
- DotCompute.Core.dll
Aggregates responses from multiple requests into a single result.
public sealed class MessageAggregator<TResponse, TResult> : IMessageAggregator<TResult>, IAsyncDisposable where TResponse : IResponseMessage
Type Parameters
TResponseThe response type.
TResultThe aggregated result type.
- Inheritance
-
MessageAggregator<TResponse, TResult>
- Implements
-
IMessageAggregator<TResult>
- Inherited Members
Constructors
MessageAggregator(int, Func<IReadOnlyList<TResponse>, TResult>, AggregationOptions, ILogger, CancellationToken)
Creates a new message aggregator.
public MessageAggregator(int expectedCount, Func<IReadOnlyList<TResponse>, TResult> aggregateFunc, AggregationOptions options, ILogger logger, CancellationToken cancellationToken = default)
Parameters
expectedCountintNumber of expected responses.
aggregateFuncFunc<IReadOnlyList<TResponse>, TResult>Function to aggregate responses.
optionsAggregationOptionsAggregation options.
loggerILoggerLogger for diagnostics.
cancellationTokenCancellationTokenCancellation token.
Properties
AggregatedResult
Gets a task that completes when aggregation is complete or times out.
public Task<TResult> AggregatedResult { get; }
Property Value
- Task<TResult>
ExpectedCount
Gets the number of expected responses.
public int ExpectedCount { get; }
Property Value
IsComplete
Gets a value indicating whether all expected responses have been received.
public bool IsComplete { get; }
Property Value
ReceivedCount
Gets the number of received responses.
public int ReceivedCount { get; }
Property Value
Methods
AddResponseAsync<TResponseInput>(TResponseInput, CancellationToken)
Adds a response to the aggregation.
public Task<bool> AddResponseAsync<TResponseInput>(TResponseInput response, CancellationToken cancellationToken = default) where TResponseInput : IResponseMessage
Parameters
responseTResponseInputThe response to add.
cancellationTokenCancellationTokenCancellation token.
Returns
Type Parameters
TResponseInput
Cancel()
Cancels the aggregation and completes with partial results.
public void Cancel()
DisposeAsync()
Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources asynchronously.
public ValueTask DisposeAsync()
Returns
- ValueTask
A task that represents the asynchronous dispose operation.
MarkFailed(Guid, Exception)
Marks a specific request as failed.
public void MarkFailed(Guid correlationId, Exception exception)