From c9b9d15a585df8f01b49510e4ff0dfb53ee7b9ef Mon Sep 17 00:00:00 2001 From: Vegard Storheil Eriksen Date: Mon, 8 Nov 2010 16:06:22 +0100 Subject: Started on payload classes. --- common/message.h | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) (limited to 'common/message.h') diff --git a/common/message.h b/common/message.h index 1d6ae8b..44343ae 100644 --- a/common/message.h +++ b/common/message.h @@ -1,6 +1,8 @@ #ifndef MESSAGE_H #define MESSAGE_H +#include "payload.h" + #include #include @@ -11,14 +13,8 @@ class Message { Message(); std::size_t deserialize_size; - - public: - typedef boost::shared_ptr p; - static p create(); - - //! Temporary payload. - std::string payload; + friend class ConnectionBase; //! Serialize message. std::pair serialize(); @@ -26,6 +22,22 @@ class Message { //! Deserialize message. std::size_t deserialize(uint8_t* data, std::size_t bytes); + Payload::Type payload_type; + Payload::Base* payload_data; + + public: + typedef boost::shared_ptr p; + + static p create(); + + //! Return payload type. + Payload::Type type(); + + //! Return reference to payload. + template + T& payload() { + return dynamic_cast(*payload_data); + } }; -#endif \ No newline at end of file +#endif -- cgit v1.2.3