Interface ICorrelationManager
- Namespace
- DotCompute.Abstractions.Messaging
- Assembly
- DotCompute.Abstractions.dll
Manages correlation between request and response messages. Tracks pending requests and provides timeout handling.
public interface ICorrelationManager : IDisposable
- Inherited Members
- Extension Methods
Remarks
The correlation manager enables request/reply patterns across Ring Kernels:
- Track pending requests with correlation IDs
- Match incoming responses to pending requests
- Handle request timeouts
- Support cancellation of pending requests
Properties
PendingCorrelationIds
Gets all pending correlation IDs.
IReadOnlyCollection<Guid> PendingCorrelationIds { get; }
Property Value
PendingRequestCount
Gets the number of pending requests.
int PendingRequestCount { get; }
Property Value
Methods
CancelRequest(Guid)
Cancels a pending request.
bool CancelRequest(Guid correlationId)
Parameters
correlationIdGuidThe correlation ID of the request to cancel.
Returns
- bool
True if the request was found and cancelled; otherwise, false.
RegisterRequest<TResponse>(IRequestMessage<TResponse>, TimeSpan, CancellationToken)
Registers a request and returns a task that completes when the response arrives.
CorrelationContext<TResponse> RegisterRequest<TResponse>(IRequestMessage<TResponse> request, TimeSpan timeout, CancellationToken cancellationToken = default) where TResponse : IResponseMessage
Parameters
requestIRequestMessage<TResponse>The request message being sent.
timeoutTimeSpanThe timeout for waiting for the response.
cancellationTokenCancellationTokenCancellation token.
Returns
- CorrelationContext<TResponse>
A correlation context that can be used to wait for the response.
Type Parameters
TResponseThe expected response type.
TryCompleteRequest(IResponseMessage)
Attempts to complete a pending request with the given response.
bool TryCompleteRequest(IResponseMessage response)
Parameters
responseIResponseMessageThe response message received.
Returns
- bool
True if a matching pending request was found and completed; otherwise, false.
Events
RequestTimedOut
Occurs when a request times out.
event EventHandler<CorrelationTimeoutEventArgs>? RequestTimedOut