Subversion Repositories HomeAutomation

Rev

Rev 1309 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 1309 Rev 1317
Line 13... Line 13...
13
Subscriber::Subscriber(boost::shared_ptr<Broker> broker, bool receiveFromMyself)
13
Subscriber::Subscriber(boost::shared_ptr<Broker> broker, bool receiveFromMyself)
14
{
14
{
15
    LOG.setName("Subscriber");
15
    LOG.setName("Subscriber");
16
    this->myBroker = broker;
16
    this->myBroker = broker;
17
    this->myReceiveFromMyself = receiveFromMyself;
17
    this->myReceiveFromMyself = receiveFromMyself;
18
    (*this->myBroker).connect(boost::bind(&Subscriber::newMessageHandler, this, _1));
18
    this->myBroker->connect(boost::bind(&Subscriber::newMessageHandler, this, _1));
19
}
19
}
20
 
20
 
21
Subscriber::~Subscriber()
21
Subscriber::~Subscriber()
22
{
22
{
23
    this->stop();
23
    this->stop();
24
}
24
}
25
 
25
 
26
void Subscriber::put(Message::pointer message)
26
void Subscriber::put(Message::pointer message)
27
{
27
{
28
    (*message).setOrigin(this);
28
    message->setOrigin(this);
29
    (*this->myBroker).put(message);
29
    this->myBroker->put(message);
30
}
30
}
31
 
31
 
32
void Subscriber::onNewMessage(Message::pointer message)
32
void Subscriber::onNewMessage(Message::pointer message)
33
{
33
{
34
}
34
}
35
 
35
 
36
void Subscriber::newMessageHandler(Message::pointer message)
36
void Subscriber::newMessageHandler(Message::pointer message)
37
{
37
{
38
    if (this->myReceiveFromMyself || !(*message).isOrigin(this))
38
    if (this->myReceiveFromMyself || !message->isOrigin(this))
39
    {
39
    {
40
        this->myQueue.push(message);
40
        this->myQueue.push(message);
41
 
41
 
42
        this->myCondition.notify_all();
42
        this->myCondition.notify_all();
43
    }
43
    }