src/proto2/NetworkPacket.hh
branchno-netsession
changeset 33 e53f09b378f4
parent 32 2ff929186c90
child 36 785d220fc6b7
equal deleted inserted replaced
32:2ff929186c90 33:e53f09b378f4
     4 #include "NetworkConfig.hh"
     4 #include "NetworkConfig.hh"
     5 
     5 
     6 class NetworkPacket {
     6 class NetworkPacket {
     7     private:
     7     private:
     8         char buf[NETWORK_PACKET_SIZE];
     8         char buf[NETWORK_PACKET_SIZE];
     9         size_t size, offset;
     9         size_t buf_size, data_size, offset;
       
    10         
       
    11         void check_write_size (size_t item_size);
       
    12         void check_read_size (size_t item_size);
    10 
    13 
    11         template <typename T> T read_val (void);
    14         template <typename T> T read_val (void);
    12         template <typename T> void write_val (const T &val);
    15         template <typename T> void write_val (const T &val);
    13  
    16  
    14     public:
    17     public:
    15         NetworkPacket (void);
    18         NetworkPacket (void);
    16         
    19         
    17         char* get_buf (void) { return buf; }
    20         char* get_buf (void) { return buf; }
    18         size_t get_data_size (void) { return offset; }
    21         const char* get_buf (void) const { return buf; }
    19         size_t get_buf_size (void) { return size; }
    22         size_t get_data_size (void) const { return data_size; }
       
    23         size_t get_buf_size (void) const { return buf_size; }
    20 
    24 
    21         void set_data_size (size_t size) { offset = size; }
    25         void set_data_size (size_t size) { offset = 0; data_size = size; }
    22        
    26        
    23         // type-reads, handle network-endianlness
    27         // type-reads, handle network-endianlness
    24         uint32_t read_uint32 (void);
    28         uint32_t read_uint32 (void) const;
    25         uint16_t read_uint16 (void);
    29         uint16_t read_uint16 (void) const;
    26         uint8_t read_uint8 (void);
    30         uint8_t read_uint8 (void) const;
    27 
    31 
    28         int32_t read_int32 (void);
    32         int32_t read_int32 (void) const;
    29         int16_t read_int16 (void);
    33         int16_t read_int16 (void) const;
    30         int8_t read_int8 (void);
    34         int8_t read_int8 (void) const;
    31 
    35 
    32         void write_uint32 (uint32_t val);
    36         void write_uint32 (uint32_t val);
    33         void write_uint16 (uint16_t val);
    37         void write_uint16 (uint16_t val);
    34         void write_uint8 (uint8_t val);
    38         void write_uint8 (uint8_t val);
    35 
    39 
    36         void write_int32 (int32_t val);
    40         void write_int32 (int32_t val);
    37         void write_int16 (int16_t val);
    41         void write_int16 (int16_t val);
    38         void write_int8 (int8_t val);
    42         void write_int8 (int8_t val);
    39 
    43 
    40 
    44         void write_packet (const NetworkPacket &pkt);
    41 };
    45 };
    42 
    46 
    43 #endif /* NETWORK_PACKET_HH */
    47 #endif /* NETWORK_PACKET_HH */