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 20... Line 20...
20
 
20
 
21
#ifndef BROKER_SUBSCRIBER_H
21
#ifndef BROKER_SUBSCRIBER_H
22
#define BROKER_SUBSCRIBER_H
22
#define BROKER_SUBSCRIBER_H
23
 
23
 
24
#include <boost/shared_ptr.hpp>
24
#include <boost/shared_ptr.hpp>
25
#include <boost/asio.hpp>
-
 
-
 
25
 
26
#include <boost/thread.hpp>
26
#include "common/IoService.h"
27
 
27
 
28
#include "Message.h"
28
#include "Message.h"
29
 
29
 
30
namespace atom {
30
namespace atom {
31
namespace broker {
31
namespace broker {
32
 
32
 
33
class Subscriber : public Origin
33
class Subscriber : virtual public common::IoService, public Origin
34
{
34
{
35
public:
35
public:
36
    typedef boost::shared_ptr<Subscriber> Pointer;
36
    typedef boost::shared_ptr<Subscriber> Pointer;
37
   
37
   
38
    Subscriber(bool receive_from_self);
38
    Subscriber(bool receive_from_self);
39
    virtual ~Subscriber();
39
    virtual ~Subscriber();
40
   
40
   
41
protected:
41
protected:
42
    typedef boost::shared_ptr<char> TrackerPointer;
-
 
43
   
-
 
44
    boost::asio::io_service io_service_;
-
 
45
    TrackerPointer tracker_;
-
 
46
   
-
 
47
    virtual void SlotOnMessageHandler(Message::Pointer message) = 0;
42
    virtual void SlotOnMessageHandler(Message::Pointer message) = 0;
48
   
43
   
49
private:
44
private:
50
    boost::thread thread_;
-
 
51
    boost::asio::io_service::work io_service_work_;
-
 
52
   
-
 
53
    bool receive_from_self_;
45
    bool receive_from_self_;
54
   
46
   
55
    void SlotOnMessage(Message::Pointer message);
47
    void SlotOnMessage(Message::Pointer message);
56
};
48
};
57
 
49