main
1using System;
2using System.Collections.Generic;
3using System.Transactions;
4using Rhino.Queues;
5using Rhino.Queues.Model;
6
7namespace common
8{
9 public class RhinoReceiver : Receiver
10 {
11 List<Observer<Message>> observers = new List<Observer<Message>>();
12 IQueue queue;
13 CommandProcessor processor;
14
15 public RhinoReceiver(IQueue queue, CommandProcessor processor)
16 {
17 this.queue = queue;
18 this.processor = processor;
19 }
20
21 public void register(Observer<Message> observer)
22 {
23 observers.Add(observer);
24 }
25
26 public void run()
27 {
28 try
29 {
30 using (var transaction = new TransactionScope())
31 {
32 var message = queue.Receive();
33 observers.each(observer => observer(message));
34 transaction.Complete();
35 }
36 }
37 catch (Exception e)
38 {
39 e.add_to_log();
40 }
41 finally
42 {
43 processor.add(this);
44 }
45 }
46 }
47}