Subversion Repositories HomeAutomation

Rev

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

Rev Author Line No. Line
1595 runge 1
/*
2216 runge 2
 *
1595 runge 3
 *  Copyright (C) 2010  Mattias Runge
2216 runge 4
 *
1595 runge 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.
2216 runge 9
 *
1595 runge 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.
2216 runge 14
 *
1595 runge 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.
2216 runge 18
 *
1595 runge 19
 */
20
 
21
#ifndef BROKER_MESSAGE_H
22
#define BROKER_MESSAGE_H
23
 
24
#include <boost/shared_ptr.hpp>
25
 
2216 runge 26
#include "common/Byteset.h"
27
 
1595 runge 28
namespace atom {
29
namespace broker {
30
 
31
class Origin
32
{
33
};
2216 runge 34
 
1595 runge 35
class Message
36
{
37
public:
38
    typedef boost::shared_ptr<Message> Pointer;
39
    typedef boost::shared_ptr<void> PayloadPointer;
2216 runge 40
 
1595 runge 41
    typedef enum
42
    {
43
        CAN_MESSAGE,
2216 runge 44
        CAN_RAW_MESSAGE,
45
        JS_COMMAND,
46
        CAN_RAW_BYTES
1595 runge 47
    } Type;
2216 runge 48
 
1595 runge 49
    Message(Type type, PayloadPointer payload, Origin* origin);
2216 runge 50
    Message(Type type, common::Byteset data, Origin* origin);
1595 runge 51
    virtual ~Message();
2216 runge 52
 
1595 runge 53
    Type GetType();
54
    PayloadPointer GetPayload();
55
    bool TestIfOrigin(Origin* origin);
2216 runge 56
 
57
    common::Byteset GetRawData();
58
 
59
 
60
 
1595 runge 61
private:
62
    Type type_;
63
    PayloadPointer payload_;
2216 runge 64
    common::Byteset data_;
1595 runge 65
    Origin* origin_;
66
};
67
 
68
}; // namespace broker
69
}; // namespace atom
70
 
71
#endif // BROKER_MESSAGE_H