Subversion Repositories HomeAutomation

Rev

Rev 1959 | Details | Compare with Previous | Last modification | View Log | SVN | RSS feed

Rev Author Line No. Line
1596 runge 1
/*
2
 *
3
 *  Copyright (C) 2010  Mattias Runge
4
 *
5
 *  This program is free software; you can redistribute it and/or modify
6
 *  it under the terms of the GNU General Public License as published by
7
 *  the Free Software Foundation; either version 2 of the License, or
8
 *  (at your option) any later version.
9
 *
10
 *  This program is distributed in the hope that it will be useful,
11
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 *  GNU General Public License for more details.
14
 *
15
 *  You should have received a copy of the GNU General Public License along
16
 *  with this program; if not, write to the Free Software Foundation, Inc.,
17
 *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
 *
19
 */
20
 
21
#ifndef CAN_MONITOR_H
22
#define CAN_MONITOR_H
23
 
24
#include <string>
1986 runge 25
#include <set>
1596 runge 26
 
27
#include <boost/shared_ptr.hpp>
28
 
29
#include "logging/Logger.h"
30
#include "broker/Subscriber.h"
1598 runge 31
#include "net/Subscriber.h"
1596 runge 32
#include "net/types.h"
1642 runge 33
#include "common/Byteset.h"
1596 runge 34
 
35
namespace atom {
36
namespace can {
37
 
1598 runge 38
class Monitor : public broker::Subscriber, public net::Subscriber
1596 runge 39
{
40
public:
41
    typedef boost::shared_ptr<Monitor> Pointer;
42
 
43
    Monitor(unsigned int port);
44
    virtual ~Monitor();
45
 
46
private:
1959 runge 47
    net::SocketId server_id_;
1986 runge 48
    std::set<net::SocketId> clients_;
1596 runge 49
 
50
    void SlotOnMessageHandler(broker::Message::Pointer message);
1986 runge 51
    void SlotOnNewStateHandler(net::SocketId id, net::ClientState client_state);
52
    void SlotOnNewClientHandler(net::SocketId id, net::SocketId server_id);
53
    void SlotOnNewDataHandler(net::SocketId id, common::Byteset data);
1596 runge 54
 
55
    logging::Logger LOG;
56
};
57
 
58
}; // namespace can
59
}; // namespace atom
60
 
61
#endif // CAN_MONITOR_H