diff options
Diffstat (limited to 'product/service.infrastructure/threading/SynchronousCommandProcessor.cs')
| -rw-r--r-- | product/service.infrastructure/threading/SynchronousCommandProcessor.cs | 37 |
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 |
