|
| 1 | +// Copyright (c) Weihan Li. All rights reserved. |
| 2 | +// Licensed under the Apache license. |
| 3 | + |
1 | 4 | using System.Collections.Concurrent;
|
2 | 5 | using System.Runtime.CompilerServices;
|
3 | 6 | using WeihanLi.Common.Models;
|
@@ -151,16 +154,28 @@ public Task<IReadOnlyCollection<StreamGroupInfo<T>>> GroupsAsync(CancellationTok
|
151 | 154 |
|
152 | 155 | public Task<StreamInfo<T>> InfoAsync(CancellationToken cancellationToken = default)
|
153 | 156 | {
|
154 |
| - var minMessage = _messages.MinBy(item => item.Id); |
155 |
| - var maxMessage = _messages.MaxBy(item => item.Id); |
156 | 157 | var streamInfo = new StreamInfo<T>
|
157 | 158 | {
|
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, |
162 | 163 | Count = _messages.Count
|
163 | 164 | };
|
| 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 | + |
164 | 179 | return streamInfo.WrapTask();
|
165 | 180 | }
|
166 | 181 |
|
|
0 commit comments