Class PostgreSqlFlowSignalStore
- Namespace
- FlowOrchestrator.PostgreSQL
- Assembly
- FlowOrchestrator.PostgreSQL.dll
Dapper-based PostgreSQL implementation of IFlowSignalStore.
Persists waiters in the flow_signal_waiters table created by PostgreSqlFlowOrchestratorMigrator.
public sealed class PostgreSqlFlowSignalStore : IFlowSignalStore
- Inheritance
-
PostgreSqlFlowSignalStore
- Implements
- Inherited Members
Constructors
PostgreSqlFlowSignalStore(string)
public PostgreSqlFlowSignalStore(string connectionString)
Parameters
connectionStringstring
Methods
DeliverSignalAsync(Guid, string, string, CancellationToken)
Atomically attempts to deliver a payload to the waiter matching (runId, signalName).
public ValueTask<SignalDeliveryResult> DeliverSignalAsync(Guid runId, string signalName, string payloadJson, CancellationToken ct = default)
Parameters
runIdGuidThe run whose waiter should receive the payload.
signalNamestringSignal name to look up.
payloadJsonstringPre-serialised JSON payload supplied by the caller.
ctCancellationTokenCancellation token.
Returns
- ValueTask<SignalDeliveryResult>
Delivered with the resolved
StepKeyon success; NotFound when no waiter matches; AlreadyDelivered when a payload is already recorded.
GetWaiterAsync(Guid, string, CancellationToken)
Returns the waiter for the given run + step key, or null if none is registered.
public ValueTask<FlowSignalWaiter?> GetWaiterAsync(Guid runId, string stepKey, CancellationToken ct = default)
Parameters
runIdGuidstepKeystringctCancellationToken
Returns
RegisterWaiterAsync(Guid, string, string, DateTimeOffset?, CancellationToken)
Registers a new waiter for runId + stepKey. Idempotent —
a duplicate register on the same key updates the signal name / expiry without resetting CreatedAt.
public ValueTask RegisterWaiterAsync(Guid runId, string stepKey, string signalName, DateTimeOffset? expiresAt, CancellationToken ct = default)
Parameters
runIdGuidThe run that owns the parked step.
stepKeystringThe step key as authored in the flow manifest.
signalNamestringLogical signal name to address the waiter from the signal endpoint.
expiresAtDateTimeOffset?Optional absolute deadline; null waits indefinitely.
ctCancellationTokenCancellation token.
Returns
RemoveWaiterAsync(Guid, string, CancellationToken)
Removes the waiter row. Called by the handler when the wait is over (delivered, expired, or cancelled).
public ValueTask RemoveWaiterAsync(Guid runId, string stepKey, CancellationToken ct = default)
Parameters
runIdGuidstepKeystringctCancellationToken