Reformat / cleanup
This commit is contained in:
@@ -8,8 +8,8 @@ namespace ZB.MOM.WW.CBDD.Core.Collections;
|
||||
public partial class DocumentCollection<TId, T> where T : class
|
||||
{
|
||||
/// <summary>
|
||||
/// Scans the entire collection using a raw BSON predicate.
|
||||
/// This avoids deserializing documents that don't match the criteria.
|
||||
/// Scans the entire collection using a raw BSON predicate.
|
||||
/// This avoids deserializing documents that don't match the criteria.
|
||||
/// </summary>
|
||||
/// <param name="predicate">Function to evaluate raw BSON data</param>
|
||||
/// <returns>Matching documents</returns>
|
||||
@@ -18,8 +18,8 @@ public partial class DocumentCollection<TId, T> where T : class
|
||||
if (predicate == null) throw new ArgumentNullException(nameof(predicate));
|
||||
|
||||
var transaction = _transactionHolder.GetCurrentTransactionOrStart();
|
||||
var txnId = transaction.TransactionId;
|
||||
var pageCount = _storage.PageCount;
|
||||
ulong txnId = transaction.TransactionId;
|
||||
uint pageCount = _storage.PageCount;
|
||||
var buffer = new byte[_storage.PageSize];
|
||||
var pageResults = new List<T>();
|
||||
|
||||
@@ -28,16 +28,13 @@ public partial class DocumentCollection<TId, T> where T : class
|
||||
pageResults.Clear();
|
||||
ScanPage(pageId, txnId, buffer, predicate, pageResults);
|
||||
|
||||
foreach (var doc in pageResults)
|
||||
{
|
||||
yield return doc;
|
||||
}
|
||||
foreach (var doc in pageResults) yield return doc;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Scans the collection in parallel using multiple threads.
|
||||
/// Useful for large collections on multi-core machines.
|
||||
/// Scans the collection in parallel using multiple threads.
|
||||
/// Useful for large collections on multi-core machines.
|
||||
/// </summary>
|
||||
/// <param name="predicate">Function to evaluate raw BSON data</param>
|
||||
/// <param name="degreeOfParallelism">Number of threads to use (default: -1 = ProcessorCount)</param>
|
||||
@@ -46,7 +43,7 @@ public partial class DocumentCollection<TId, T> where T : class
|
||||
if (predicate == null) throw new ArgumentNullException(nameof(predicate));
|
||||
|
||||
var transaction = _transactionHolder.GetCurrentTransactionOrStart();
|
||||
var txnId = transaction.TransactionId;
|
||||
ulong txnId = transaction.TransactionId;
|
||||
var pageCount = (int)_storage.PageCount;
|
||||
|
||||
if (degreeOfParallelism <= 0)
|
||||
@@ -61,15 +58,14 @@ public partial class DocumentCollection<TId, T> where T : class
|
||||
var localResults = new List<T>();
|
||||
|
||||
for (int i = range.Item1; i < range.Item2; i++)
|
||||
{
|
||||
ScanPage((uint)i, txnId, localBuffer, predicate, localResults);
|
||||
}
|
||||
|
||||
return localResults;
|
||||
});
|
||||
}
|
||||
|
||||
private void ScanPage(uint pageId, ulong txnId, byte[] buffer, Func<BsonSpanReader, bool> predicate, List<T> results)
|
||||
private void ScanPage(uint pageId, ulong txnId, byte[] buffer, Func<BsonSpanReader, bool> predicate,
|
||||
List<T> results)
|
||||
{
|
||||
_storage.ReadPage(pageId, txnId, buffer);
|
||||
var header = SlottedPageHeader.ReadFrom(buffer);
|
||||
@@ -80,7 +76,7 @@ public partial class DocumentCollection<TId, T> where T : class
|
||||
var slots = MemoryMarshal.Cast<byte, SlotEntry>(
|
||||
buffer.AsSpan(SlottedPageHeader.Size, header.SlotCount * SlotEntry.Size));
|
||||
|
||||
for (int i = 0; i < header.SlotCount; i++)
|
||||
for (var i = 0; i < header.SlotCount; i++)
|
||||
{
|
||||
var slot = slots[i];
|
||||
|
||||
@@ -98,4 +94,4 @@ public partial class DocumentCollection<TId, T> where T : class
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user