Subversion Repositories HomeAutomation

Rev

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) : io_service_work_(io_service_)
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))