src/proto2/NetworkPacket.hh
branchno-netsession
changeset 33 e53f09b378f4
parent 32 2ff929186c90
child 36 785d220fc6b7
--- a/src/proto2/NetworkPacket.hh	Mon Nov 10 18:21:23 2008 +0000
+++ b/src/proto2/NetworkPacket.hh	Mon Nov 10 19:57:57 2008 +0000
@@ -6,7 +6,10 @@
 class NetworkPacket {
     private:
         char buf[NETWORK_PACKET_SIZE];
-        size_t size, offset;
+        size_t buf_size, data_size, offset;
+        
+        void check_write_size (size_t item_size);
+        void check_read_size (size_t item_size);
 
         template <typename T> T read_val (void);
         template <typename T> void write_val (const T &val);
@@ -15,19 +18,20 @@
         NetworkPacket (void);
         
         char* get_buf (void) { return buf; }
-        size_t get_data_size (void) { return offset; }
-        size_t get_buf_size (void) { return size; }
+        const char* get_buf (void) const { return buf; }
+        size_t get_data_size (void) const { return data_size; }
+        size_t get_buf_size (void) const { return buf_size; }
 
-        void set_data_size (size_t size) { offset = size; }
+        void set_data_size (size_t size) { offset = 0; data_size = size; }
        
         // type-reads, handle network-endianlness
-        uint32_t read_uint32 (void);
-        uint16_t read_uint16 (void);
-        uint8_t read_uint8 (void);
+        uint32_t read_uint32 (void) const;
+        uint16_t read_uint16 (void) const;
+        uint8_t read_uint8 (void) const;
 
-        int32_t read_int32 (void);
-        int16_t read_int16 (void);
-        int8_t read_int8 (void);
+        int32_t read_int32 (void) const;
+        int16_t read_int16 (void) const;
+        int8_t read_int8 (void) const;
 
         void write_uint32 (uint32_t val);
         void write_uint16 (uint16_t val);
@@ -37,7 +41,7 @@
         void write_int16 (int16_t val);
         void write_int8 (int8_t val);
 
-
+        void write_packet (const NetworkPacket &pkt);
 };
 
 #endif /* NETWORK_PACKET_HH */