Subversion Repositories HomeAutomation

Rev

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

Rev Author Line No. Line
1595 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_NETWORK_H
22
#define CAN_NETWORK_H
23
 
24
#include <string>
25
 
26
#include <boost/shared_ptr.hpp>
27
 
28
#include "logging/Logger.h"
29
#include "broker/Subscriber.h"
1598 runge 30
#include "net/Subscriber.h"
1595 runge 31
#include "net/types.h"
1642 runge 32
#include "common/Byteset.h"
1596 runge 33
#include "timer/Manager.h"
1595 runge 34
 
35
namespace atom {
36
namespace can {
37
 
1598 runge 38
class Network : public broker::Subscriber, public net::Subscriber
1595 runge 39
{
40
public:
41
    typedef boost::shared_ptr<Network> Pointer;
42
 
43
    Network(std::string address);
44
    virtual ~Network();
45
 
46
private:
1959 runge 47
    net::SocketId client_id_;
1989 runge 48
    net::TransportProtocol protocol_;
1595 runge 49
    std::string address_;
50
    unsigned int port_or_baud_;
1642 runge 51
    common::Byteset buffer_;    
1596 runge 52
    timer::TimerId timer_id_;
1595 runge 53
 
54
    void SlotOnMessageHandler(broker::Message::Pointer message);
55
 
1596 runge 56
    void SlotOnTimeout(timer::TimerId timer_id);
1595 runge 57
 
1986 runge 58
    void SlotOnNewStateHandler(net::SocketId id, net::ClientState client_state);
59
    void SlotOnNewClientHandler(net::SocketId id, net::SocketId server_id);
60
    void SlotOnNewDataHandler(net::SocketId id, common::Byteset data);
1596 runge 61
    void SlotOnTimeoutHandler(timer::TimerId timer_id);
1595 runge 62
 
1596 runge 63
    void ProcessBuffer();
64
 
1595 runge 65
    logging::Logger LOG;    
66
};
67
 
68
}; // namespace can
69
}; // namespace atom
70
 
71
#endif // CAN_NETWORK_H