Subversion Repositories HomeAutomation

Rev

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

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