diff -r 32c6cc55256a -r b70d30e1b0fe src/proto2/Protocol.hh --- a/src/proto2/Protocol.hh Sat Nov 08 18:02:58 2008 +0000 +++ b/src/proto2/Protocol.hh Sat Nov 08 20:34:14 2008 +0000 @@ -1,74 +1,4 @@ #ifndef PROTOCOL_HH #define PROTOCOL_HH -#include "NetworkConfig.hh" -#include "Network.hh" - -#include - -enum packet_type { - PKT_INVALID, - PKT_HELLO -}; - -class NetworkPacket { - private: - char buf[NETWORK_PACKET_MAX]; - size_t size; - size_t offset; - public: - CL_IPAddress src; - - public: - NetworkPacket () : size(0), offset(0) { } - - void recvFromSocket (CL_Socket &sock) { - size = sock.recv((void *) buf, NETWORK_PACKET_MAX, src); - - offset = 0; - } - - template void read_into (T* val_ptr) { - if (offset + sizeof(T) > size) - throw std::logic_error("short packet"); - - *val_ptr = *((T*) (buf + offset)); - - offset += sizeof(T); - } - - template T read_type (void) { - T val; - - read_into(&val); - - return val; - } - - uint8_t read_uint8 (void) { - return read_type(); - } - - uint16_t read_uint16 (void) { - return htons(read_type()); - } - - enum packet_type read_pkt_type (void) { - return (enum packet_type) read_uint8(); - } -}; - -struct pkt_base { - NetworkPacket &packet; - - pkt_base (NetworkPacket &packet) : packet(packet) { } -}; - -struct pkt_Hello : public pkt_base { - uint16_t player_id; - - pkt_Hello (NetworkPacket &packet) : pkt_base(packet), - player_id(packet.read_uint16()) { } -}; - #endif