Skip to content

Commit 4bc2ca5

Browse files
committed
refactor: update InMemoryStream
1 parent 339a0c4 commit 4bc2ca5

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

src/WeihanLi.Common/Helpers/InMemoryStream.cs

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
// Copyright (c) Weihan Li. All rights reserved.
2+
// Licensed under the Apache license.
3+
14
using System.Collections.Concurrent;
25
using System.Runtime.CompilerServices;
36
using WeihanLi.Common.Models;
@@ -151,16 +154,28 @@ public Task<IReadOnlyCollection<StreamGroupInfo<T>>> GroupsAsync(CancellationTok
151154

152155
public Task<StreamInfo<T>> InfoAsync(CancellationToken cancellationToken = default)
153156
{
154-
var minMessage = _messages.MinBy(item => item.Id);
155-
var maxMessage = _messages.MaxBy(item => item.Id);
156157
var streamInfo = new StreamInfo<T>
157158
{
158-
MinId = minMessage?.Id ?? default,
159-
MinTimestamp = minMessage?.Timestamp ?? default,
160-
MaxId = maxMessage?.Id ?? default,
161-
MaxTimestamp = maxMessage?.Timestamp ?? default,
159+
MinId = default,
160+
MinTimestamp = default,
161+
MaxId = default,
162+
MaxTimestamp = default,
162163
Count = _messages.Count
163164
};
165+
166+
if (_messages.Count > 0)
167+
{
168+
var minMessage = _messages.MinBy(item => item.Id, _comparer);
169+
var maxMessage = _messages.MaxBy(item => item.Id, _comparer);
170+
ArgumentNullException.ThrowIfNull(minMessage);
171+
ArgumentNullException.ThrowIfNull(maxMessage);
172+
173+
streamInfo.MinId = minMessage.Id;
174+
streamInfo.MinTimestamp = minMessage.Timestamp;
175+
streamInfo.MaxId = maxMessage.Id;
176+
streamInfo.MaxTimestamp = maxMessage.Timestamp;
177+
}
178+
164179
return streamInfo.WrapTask();
165180
}
166181

0 commit comments

Comments
 (0)