本文整理汇总了C#中ConcurrentQueue.Sorted方法的典型用法代码示例。如果您正苦于以下问题:C# ConcurrentQueue.Sorted方法的具体用法?C# ConcurrentQueue.Sorted怎么用?C# ConcurrentQueue.Sorted使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ConcurrentQueue
的用法示例。
在下文中一共展示了ConcurrentQueue.Sorted方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: PartialReadTransfer
public void PartialReadTransfer()
{
var partialObjects = new[]
{
new Ds3PartialObject(Range.ByLength(0L, 4L), "foo"),
new Ds3PartialObject(Range.ByLength(6L, 10L), "foo"),
new Ds3PartialObject(Range.ByLength(18L, 1L), "foo"),
new Ds3PartialObject(Range.ByLength(10L, 26L), "bar"),
};
var fullObjects = new[] { "hello" };
var initialJobResponse = Stubs.BuildJobResponse(
Stubs.Chunk1(null, false, false),
Stubs.Chunk2(null, false, false),
Stubs.Chunk3(null, false, false)
);
var availableJobResponse = Stubs.BuildJobResponse(
Stubs.Chunk1(Stubs.NodeId2, true, true),
Stubs.Chunk2(Stubs.NodeId2, true, true),
Stubs.Chunk3(Stubs.NodeId1, true, true)
);
var node1Client = new Mock<IDs3Client>(MockBehavior.Strict);
MockHelpers.SetupGetObject(node1Client, "hello", 0L, "ABCDefGHIJ", Range.ByLength(0L, 10L));
MockHelpers.SetupGetObject(node1Client, "bar", 35L, "z", Range.ByLength(35L, 1L));
var node2Client = new Mock<IDs3Client>(MockBehavior.Strict);
MockHelpers.SetupGetObject(node2Client, "bar", 0L, "abcde", Range.ByLength(10L, 5L));
MockHelpers.SetupGetObject(node2Client, "foo", 10L, "klmnop!", Range.ByLength(10L, 6L), Range.ByLength(18L, 1L));
MockHelpers.SetupGetObject(node2Client, "foo", 0L, "abcdghij", Range.ByLength(0L, 4L), Range.ByLength(6L, 4L));
MockHelpers.SetupGetObject(node2Client, "bar", 15L, "fghijklmnopqrstuvwxy", Range.ByLength(15L, 20L));
var clientFactory = new Mock<IDs3ClientFactory>(MockBehavior.Strict);
clientFactory
.Setup(cf => cf.GetClientForNodeId(Stubs.NodeId1))
.Returns(node1Client.Object);
clientFactory
.Setup(cf => cf.GetClientForNodeId(Stubs.NodeId2))
.Returns(node2Client.Object);
var client = new Mock<IDs3Client>(MockBehavior.Strict);
client
.Setup(c => c.BuildFactory(Stubs.Nodes))
.Returns(clientFactory.Object);
client
.Setup(c => c.GetBulkJobSpectraS3(MockHelpers.ItIsBulkGetRequest(
Stubs.BucketName,
null,
fullObjects,
partialObjects
)))
.Returns(new GetBulkJobSpectraS3Response(initialJobResponse));
client
.Setup(c => c.GetJobChunksReadyForClientProcessingSpectraS3(MockHelpers.ItIsGetAvailableJobChunksRequest(Stubs.JobId)))
.Returns(GetJobChunksReadyForClientProcessingSpectraS3Response.Success(TimeSpan.FromMinutes(1), availableJobResponse));
var job = new Ds3ClientHelpers(client.Object)
.StartPartialReadJob(Stubs.BucketName, fullObjects, partialObjects);
CollectionAssert.AreEquivalent(
partialObjects.Concat(new[] { new Ds3PartialObject(Range.ByLength(0L, 10L), "hello") }),
job.AllItems
);
var dataTransfers = new ConcurrentQueue<long>();
var itemsCompleted = new ConcurrentQueue<Ds3PartialObject>();
job.DataTransferred += dataTransfers.Enqueue;
job.ItemCompleted += itemsCompleted.Enqueue;
var streams = new ConcurrentDictionary<Ds3PartialObject, MockStream>();
job.Transfer(key => streams.GetOrAdd(key, k => new MockStream()));
node1Client.VerifyAll();
node2Client.VerifyAll();
clientFactory.VerifyAll();
client.VerifyAll();
var fullObjectPart = new Ds3PartialObject(Range.ByLength(0L, 10L), fullObjects[0]);
CollectionAssert.AreEqual(
new[]
{
new { Key = partialObjects[0], Value = "abcd" },
new { Key = partialObjects[1], Value = "ghijklmnop" },
new { Key = partialObjects[2], Value = "!" },
new { Key = partialObjects[3], Value = "abcdefghijklmnopqrstuvwxyz" },
new { Key = fullObjectPart, Value = "ABCDefGHIJ" },
}.OrderBy(it => it.Key).ToArray(),
(
from item in streams
orderby item.Key
select new { item.Key, Value = MockHelpers.Encoding.GetString(item.Value.Result) }
).ToArray()
);
CollectionAssert.AreEquivalent(
new[] { 1L, 1L, 4L, 4L, 5L, 6L, 10L, 20L },
dataTransfers.Sorted().ToArray()
);
CollectionAssert.AreEquivalent(partialObjects.Concat(new[] { fullObjectPart }), itemsCompleted);
}