From 2b1bbec49d114203abd595fffa2e28e96fc8b504 Mon Sep 17 00:00:00 2001 From: Alexandru Macocian Date: Sat, 21 Mar 2020 12:26:43 +0100 Subject: [PATCH] Implemented sequential scheduler --- MTSC/MTSC.csproj | 6 +++--- .../Schedulers/SequentialProcessingScheduler.cs | 17 +++++++++++++++++ .../Schedulers/TaskAwaiterScheduler.cs | 2 +- 3 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 MTSC/ServerSide/Schedulers/SequentialProcessingScheduler.cs diff --git a/MTSC/MTSC.csproj b/MTSC/MTSC.csproj index ce1462b..9c10e72 100644 --- a/MTSC/MTSC.csproj +++ b/MTSC/MTSC.csproj @@ -5,12 +5,12 @@ netcoreapp2.1;net48;netstandard2.0;netcoreapp3.0 - 2.1.1 + 2.1.2 Alexandru-Victor Macocian MTSC Modular TCP Server and Client - 0.2.1.1 - 0.2.1.1 + 0.2.1.2 + 0.2.1.2 true AnyCPU;x64 https://github.com/AlexMacocian/MTSC diff --git a/MTSC/ServerSide/Schedulers/SequentialProcessingScheduler.cs b/MTSC/ServerSide/Schedulers/SequentialProcessingScheduler.cs new file mode 100644 index 0000000..edb0ffa --- /dev/null +++ b/MTSC/ServerSide/Schedulers/SequentialProcessingScheduler.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Concurrent; + +namespace MTSC.ServerSide.Schedulers +{ + public class SequentialProcessingScheduler : IScheduler + { + void IScheduler.ScheduleHandling(IProducerConsumerCollection<(ClientData, Message)> inQueue, Action messageHandlingProcedure) + { + while (inQueue.TryTake(out var tuple)) + { + (var client, var message) = tuple; + messageHandlingProcedure.Invoke(client, message); + } + } + } +} diff --git a/MTSC/ServerSide/Schedulers/TaskAwaiterScheduler.cs b/MTSC/ServerSide/Schedulers/TaskAwaiterScheduler.cs index 9f5c751..4debaaf 100644 --- a/MTSC/ServerSide/Schedulers/TaskAwaiterScheduler.cs +++ b/MTSC/ServerSide/Schedulers/TaskAwaiterScheduler.cs @@ -5,7 +5,7 @@ using System.Threading.Tasks; namespace MTSC.ServerSide.Schedulers { - class TaskAwaiterScheduler : IScheduler + public class TaskAwaiterScheduler : IScheduler { void IScheduler.ScheduleHandling(IProducerConsumerCollection<(ClientData, Message)> inQueue, Action messageHandlingProcedure) {