Rev 1595 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed
| Rev 1595 | Rev 1598 | ||
|---|---|---|---|
| Line 25... | Line 25... | ||
| 25 | #include "Manager.h" |
25 | #include "Manager.h" |
| 26 | 26 | ||
| 27 | namespace atom { |
27 | namespace atom { |
| 28 | namespace broker { |
28 | namespace broker { |
| 29 | 29 | ||
| 30 | Subscriber::Subscriber(bool receive_from_self |
30 | Subscriber::Subscriber(bool receive_from_self) |
| 31 | { |
31 | { |
| 32 | this->receive_from_self_ = receive_from_self; |
32 | this->receive_from_self_ = receive_from_self; |
| 33 | - | ||
| 34 | boost::thread thread(boost::bind(&boost::asio::io_service::run, &this->io_service_)); |
- | |
| 35 | this->thread_ = thread.move(); |
- | |
| 36 | - | ||
| 37 | this->tracker_ = TrackerPointer(new char); |
- | |
| 38 | 33 | ||
| 39 | Manager::Instance()->ConnectSlots(Manager::SignalOnMessage::slot_type(&Subscriber::SlotOnMessage, this, _1).track(this->tracker_)); |
34 | Manager::Instance()->ConnectSlots(Manager::SignalOnMessage::slot_type(&Subscriber::SlotOnMessage, this, _1).track(this->tracker_)); |
| 40 | } |
35 | } |
| 41 | 36 | ||
| 42 | Subscriber::~Subscriber() |
37 | Subscriber::~Subscriber() |
| 43 | { |
38 | { |
| 44 | this->tracker_.reset(); |
- | |
| 45 | - | ||
| 46 | this->thread_.interrupt(); |
- | |
| 47 | this->thread_.join(); |
- | |
| 48 | } |
39 | } |
| 49 | 40 | ||
| 50 | void Subscriber::SlotOnMessage(Message::Pointer message) |
41 | void Subscriber::SlotOnMessage(Message::Pointer message) |
| 51 | { |
42 | { |
| 52 | if (this->receive_from_self_ || !message->TestIfOrigin(this)) |
43 | if (this->receive_from_self_ || !message->TestIfOrigin(this)) |