feat: complete final jetstream parity transport and runtime baselines

This commit is contained in:
Joseph Doherty
2026-02-23 11:04:43 -05:00
parent 53585012f3
commit 8bce096f55
61 changed files with 2655 additions and 129 deletions

View File

@@ -24,6 +24,7 @@ public sealed class FileStore : IStreamStore, IAsyncDisposable
Sequence = _last,
Subject = subject,
Payload = payload.ToArray(),
TimestampUtc = DateTime.UtcNow,
};
_messages[_last] = stored;
@@ -32,6 +33,7 @@ public sealed class FileStore : IStreamStore, IAsyncDisposable
Sequence = stored.Sequence,
Subject = stored.Subject,
PayloadBase64 = Convert.ToBase64String(stored.Payload.ToArray()),
TimestampUtc = stored.TimestampUtc,
});
await File.AppendAllTextAsync(_dataFilePath, line + Environment.NewLine, ct);
return _last;
@@ -79,6 +81,7 @@ public sealed class FileStore : IStreamStore, IAsyncDisposable
Sequence = x.Sequence,
Subject = x.Subject,
PayloadBase64 = Convert.ToBase64String(x.Payload.ToArray()),
TimestampUtc = x.TimestampUtc,
})
.ToArray();
return ValueTask.FromResult(JsonSerializer.SerializeToUtf8Bytes(snapshot));
@@ -101,6 +104,7 @@ public sealed class FileStore : IStreamStore, IAsyncDisposable
Sequence = record.Sequence,
Subject = record.Subject ?? string.Empty,
Payload = Convert.FromBase64String(record.PayloadBase64 ?? string.Empty),
TimestampUtc = record.TimestampUtc,
};
_messages[record.Sequence] = message;
_last = Math.Max(_last, record.Sequence);
@@ -119,6 +123,7 @@ public sealed class FileStore : IStreamStore, IAsyncDisposable
Messages = (ulong)_messages.Count,
FirstSeq = _messages.Count == 0 ? 0UL : _messages.Keys.Min(),
LastSeq = _last,
Bytes = (ulong)_messages.Values.Sum(m => m.Payload.Length),
});
}
@@ -172,6 +177,7 @@ public sealed class FileStore : IStreamStore, IAsyncDisposable
Sequence = message.Sequence,
Subject = message.Subject,
PayloadBase64 = Convert.ToBase64String(message.Payload.ToArray()),
TimestampUtc = message.TimestampUtc,
}));
}
@@ -183,5 +189,6 @@ public sealed class FileStore : IStreamStore, IAsyncDisposable
public ulong Sequence { get; init; }
public string? Subject { get; init; }
public string? PayloadBase64 { get; init; }
public DateTime TimestampUtc { get; init; }
}
}