From dc104e37842049e040f7e39f4e1aab56cde1488c Mon Sep 17 00:00:00 2001 From: Jon Bergli Heier Date: Wed, 1 Jun 2011 19:02:52 +0200 Subject: Moved common files here. --- messages.h | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 messages.h (limited to 'messages.h') diff --git a/messages.h b/messages.h new file mode 100644 index 0000000..021c175 --- /dev/null +++ b/messages.h @@ -0,0 +1,65 @@ +#ifndef MESSAGES_H +#define MESSAGES_H + +#include + +namespace message { + +enum MessageType { + MSG_TYPE_NONE = 0, + MSG_TYPE_HELLO, + MSG_TYPE_POS, + MSG_TYPE_CHUNK +}; + +class MessageBase { + protected: + uint8_t type; + boost::asio::streambuf b; + + public: + MessageBase(); + virtual ~MessageBase() {}; + + void send(boost::asio::ip::tcp::socket& socket); + virtual std::size_t payload_size(); + virtual void read(boost::asio::ip::tcp::socket& socket); + + static uint8_t read_type(boost::asio::ip::tcp::socket& socket); +}; + +class Hello : public MessageBase { + public: + Hello(); + Hello(uint8_t version); + + virtual std::size_t payload_size(); + uint8_t read_version(); +}; + +class Pos : public MessageBase { + public: + Pos(); + Pos(float x, float y, float z); + + virtual std::size_t payload_size(); + void get_pos(float& x, float& y, float& z); +}; + +class Chunk : public MessageBase { + protected: + bool got_coords; + + public: + Chunk(); + Chunk(int64_t x, int64_t y); + + virtual std::size_t payload_size(); + void set_data(float *data); + float* get_data(); + void get_coords(int64_t& x, int64_t& y); +}; + +} + +#endif -- cgit v1.2.3