Table of Contents

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

IReadOnlyCollection<Guid>

PendingRequestCount

Gets the number of pending requests.

int PendingRequestCount { get; }

Property Value

int

Methods

CancelRequest(Guid)

Cancels a pending request.

bool CancelRequest(Guid correlationId)

Parameters

correlationId Guid

The 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

request IRequestMessage<TResponse>

The request message being sent.

timeout TimeSpan

The timeout for waiting for the response.

cancellationToken CancellationToken

Cancellation token.

Returns

CorrelationContext<TResponse>

A correlation context that can be used to wait for the response.

Type Parameters

TResponse

The expected response type.

TryCompleteRequest(IResponseMessage)

Attempts to complete a pending request with the given response.

bool TryCompleteRequest(IResponseMessage response)

Parameters

response IResponseMessage

The 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

Event Type

EventHandler<CorrelationTimeoutEventArgs>