src/Network/Packet.cc
changeset 387 294ce7ae8140
parent 365 65295dfbbf64
child 391 59c2499fe7bb
equal deleted inserted replaced
386:2f019ecb4aa9 387:294ce7ae8140
   133         
   133         
   134 void NetworkPacketBuffer::check_read_size (size_t item_size) {
   134 void NetworkPacketBuffer::check_read_size (size_t item_size) {
   135     if (offset + item_size > data_size)
   135     if (offset + item_size > data_size)
   136         throw NetworkPacketError("not enough data to read");
   136         throw NetworkPacketError("not enough data to read");
   137 }
   137 }
   138 
   138        
   139 void NetworkPacketBuffer::write (const void *ptr, size_t len) {
   139 const void* NetworkPacketBuffer::read_ptr (size_t len) {
   140     // check buffer overflow
   140     // check buffer overflow
   141     check_write_size(len);
   141     check_write_size(len);
   142 
   142 
   143     // set value
   143     // pointer value...
   144     memcpy(buf_ptr + offset, ptr, len);
   144     const void *ptr = buf_ptr + offset;
       
   145     
       
   146     // update offset
       
   147     offset += len;
       
   148     
       
   149     // return pointer
       
   150     return ptr;
       
   151 }
       
   152         
       
   153 void* NetworkPacketBuffer::write_ptr (size_t len) {
       
   154     // check buffer overflow
       
   155     check_write_size(len);
       
   156 
       
   157     // pointer value...
       
   158     void *ptr = buf_ptr + offset;
   145 
   159 
   146     // update offset and size
   160     // update offset and size
   147     offset += len;
   161     offset += len;
   148     data_size += len;
   162     data_size += len;
       
   163     
       
   164     // return pointer
       
   165     return ptr;
   149 }
   166 }
   150 
   167 
   151 void NetworkPacketBuffer::read (void *ptr, size_t len) {
   168 void NetworkPacketBuffer::read (void *ptr, size_t len) {
   152     // check buffer underflow
   169     // get input pointer...
   153     check_read_size(len);
   170     const void *input_ptr = read_ptr(len);
   154 
   171 
   155     // set value
   172     // copy value out
   156     memcpy(ptr, buf_ptr + offset, len);
   173     memcpy(ptr, input_ptr, len);
   157 
   174 }
   158     // update offset
   175  
   159     offset += len;
   176 void NetworkPacketBuffer::write (const void *ptr, size_t len) {
       
   177     // get output pointer...
       
   178     void *output_ptr = write_ptr(len);
       
   179 
       
   180     // copy value in
       
   181     memcpy(output_ptr, ptr, len);
       
   182 }
       
   183         
       
   184 size_t NetworkPacketBuffer::tell_remaining (void) {
       
   185     // number of bytes in total - number of bytes read
       
   186     return data_size - offset;
   160 }
   187 }
   161 
   188 
   162 /*
   189 /*
   163  * NetworkPacket
   190  * NetworkPacket
   164  */
   191  */