Files
git.stella-ops.org/src/Scheduler/__Libraries/StellaOps.Scheduler.Queue/Redis/IRedisSchedulerQueuePayload.cs
2026-01-06 19:07:48 +02:00

50 lines
1.3 KiB
C#

using System.Collections.Generic;
namespace StellaOps.Scheduler.Queue.Redis;
internal interface IRedisSchedulerQueuePayload<TMessage>
{
string QueueName { get; }
string GetIdempotencyKey(TMessage message);
string Serialize(TMessage message);
TMessage Deserialize(string payload);
string GetRunId(TMessage message);
string GetTenantId(TMessage message);
string? GetScheduleId(TMessage message);
string? GetSegmentId(TMessage message);
string? GetCorrelationId(TMessage message);
IReadOnlyDictionary<string, string>? GetAttributes(TMessage message);
// HLC fields for deterministic ordering (SPRINT_20260105_002_002)
// Default implementations return null for backward compatibility
/// <summary>
/// Gets the HLC timestamp string for deterministic ordering.
/// </summary>
string? GetTHlc(TMessage message) => null;
/// <summary>
/// Gets the chain link (hex-encoded SHA-256) proving sequence position.
/// </summary>
string? GetChainLink(TMessage message) => null;
/// <summary>
/// Gets the previous chain link (hex-encoded, null for first entry).
/// </summary>
string? GetPrevChainLink(TMessage message) => null;
/// <summary>
/// Gets the payload hash (hex-encoded SHA-256).
/// </summary>
string? GetPayloadHash(TMessage message) => null;
}