summaryrefslogtreecommitdiff
path: root/product/service.infrastructure/threading/SynchronousCommandProcessor.cs
diff options
context:
space:
mode:
Diffstat (limited to 'product/service.infrastructure/threading/SynchronousCommandProcessor.cs')
-rw-r--r--product/service.infrastructure/threading/SynchronousCommandProcessor.cs37
1 files changed, 37 insertions, 0 deletions
diff --git a/product/service.infrastructure/threading/SynchronousCommandProcessor.cs b/product/service.infrastructure/threading/SynchronousCommandProcessor.cs
new file mode 100644
index 0000000..87098aa
--- /dev/null
+++ b/product/service.infrastructure/threading/SynchronousCommandProcessor.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.Linq.Expressions;
+using gorilla.commons.utility;
+
+namespace MoMoney.Service.Infrastructure.Threading
+{
+ public class SynchronousCommandProcessor : CommandProcessor
+ {
+ readonly Queue<Command> queued_commands;
+
+ public SynchronousCommandProcessor()
+ {
+ queued_commands = new Queue<Command>();
+ }
+
+ public void add(Expression<Action> action_to_process)
+ {
+ add(new AnonymousCommand(action_to_process));
+ }
+
+ public void add(Command command_to_process)
+ {
+ queued_commands.Enqueue(command_to_process);
+ }
+
+ public void run()
+ {
+ while (queued_commands.Count > 0) queued_commands.Dequeue().run();
+ }
+
+ public void stop()
+ {
+ queued_commands.Clear();
+ }
+ }
+} \ No newline at end of file