src/Network/Packet.cc
author terom
Mon, 22 Dec 2008 02:37:43 +0000
changeset 387 294ce7ae8140
parent 365 65295dfbbf64
child 391 59c2499fe7bb
permissions -rw-r--r--
dirty implementation of compressed terrain array data
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
     1
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
     2
#include <cassert>
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
     3
#include <cstring>
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
     4
186
0738f2949a2b move src/Network% to src/Network/%
terom
parents: 185
diff changeset
     5
#include "Packet.hh"
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
     6
365
65295dfbbf64 fix optimization-related warnings
terom
parents: 202
diff changeset
     7
// XXX: assumes that sizeof(float32) == sizeof(int32);
65295dfbbf64 fix optimization-related warnings
terom
parents: 202
diff changeset
     8
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
     9
/*
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    10
 * NetworkPacketInput
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    11
 */
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    12
template <typename T> T NetworkPacketInput::read_val (void) {
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    13
    T val;
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    14
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    15
    // read
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    16
    read(&val, sizeof(T));
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    17
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    18
    // return
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    19
    return val;
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    20
}
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    21
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    22
uint32_t NetworkPacketInput::read_uint32 (void) {
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    23
    return ntohl(read_val<uint32_t>());
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    24
}
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    25
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    26
uint16_t NetworkPacketInput::read_uint16 (void) {
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    27
    return ntohs(read_val<uint16_t>());
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    28
}
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    29
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    30
uint8_t NetworkPacketInput::read_uint8 (void) {
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    31
    return read_val<uint8_t>();
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    32
}
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    33
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    34
int32_t NetworkPacketInput::read_int32 (void) {
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    35
    return ntohl(read_val<int32_t>());
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    36
}
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    37
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    38
int16_t NetworkPacketInput::read_int16 (void) {
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    39
    return ntohs(read_val<int16_t>());
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    40
}
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    41
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    42
int8_t NetworkPacketInput::read_int8 (void) {
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    43
    return read_val<int8_t>();
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    44
}
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    45
        
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    46
float NetworkPacketInput::read_float32 (void) {
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    47
    int32_t ival = read_int32();
365
65295dfbbf64 fix optimization-related warnings
terom
parents: 202
diff changeset
    48
    float fval;
65295dfbbf64 fix optimization-related warnings
terom
parents: 202
diff changeset
    49
    
65295dfbbf64 fix optimization-related warnings
terom
parents: 202
diff changeset
    50
    assert(sizeof(ival) == sizeof(fval));
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    51
365
65295dfbbf64 fix optimization-related warnings
terom
parents: 202
diff changeset
    52
    memcpy(&fval, &ival, sizeof(float));
65295dfbbf64 fix optimization-related warnings
terom
parents: 202
diff changeset
    53
65295dfbbf64 fix optimization-related warnings
terom
parents: 202
diff changeset
    54
    return fval;
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    55
}
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    56
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    57
Vector NetworkPacketInput::read_vector (void) {
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    58
    float fx = read_float32();
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    59
    float fy = read_float32();
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    60
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    61
    return Vector(fx, fy);
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    62
}
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    63
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    64
/*
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    65
 * NetworkPacketOutput
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    66
 */
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    67
template <typename T> void NetworkPacketOutput::write_val (const T &val) {
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    68
    // write
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    69
    write(&val, sizeof(T));
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    70
}
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    71
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    72
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    73
void NetworkPacketOutput::write_uint32 (uint32_t val) {
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    74
    write_val<uint32_t>(htonl(val));
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    75
}
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    76
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    77
void NetworkPacketOutput::write_uint16 (uint16_t val) {
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    78
    write_val<uint16_t>(htons(val));
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    79
}
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    80
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    81
void NetworkPacketOutput::write_uint8 (uint8_t val) {
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    82
    write_val<uint8_t>(val);
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    83
}
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    84
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    85
void NetworkPacketOutput::write_int32 (int32_t val) {
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    86
    write_val<int32_t>(htonl(val));
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    87
}
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    88
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    89
void NetworkPacketOutput::write_int16 (int16_t val) {
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    90
    write_val<int16_t>(htons(val));
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    91
}
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    92
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    93
void NetworkPacketOutput::write_int8 (int8_t val) {
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    94
    write_val<int8_t>(val);
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    95
}
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    96
        
365
65295dfbbf64 fix optimization-related warnings
terom
parents: 202
diff changeset
    97
void NetworkPacketOutput::write_float32 (float fval) {
65295dfbbf64 fix optimization-related warnings
terom
parents: 202
diff changeset
    98
    int32_t ival;
65295dfbbf64 fix optimization-related warnings
terom
parents: 202
diff changeset
    99
65295dfbbf64 fix optimization-related warnings
terom
parents: 202
diff changeset
   100
    assert(sizeof(ival) == sizeof(fval));
65295dfbbf64 fix optimization-related warnings
terom
parents: 202
diff changeset
   101
65295dfbbf64 fix optimization-related warnings
terom
parents: 202
diff changeset
   102
    memcpy(&ival, &fval, sizeof(int32_t));
65295dfbbf64 fix optimization-related warnings
terom
parents: 202
diff changeset
   103
65295dfbbf64 fix optimization-related warnings
terom
parents: 202
diff changeset
   104
    write_int32(ival);
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   105
}
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   106
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   107
void NetworkPacketOutput::write_vector (const Vector &vec) {
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   108
    write_float32(vec.x);
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   109
    write_float32(vec.y);
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   110
}
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   111
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   112
void NetworkPacketOutput::write_packet (const NetworkPacketBuffer &pkt) {
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   113
    // just write() it
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   114
    write(pkt.get_buf(), pkt.get_data_size());
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   115
}
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   116
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   117
/*
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   118
 * NetworkPacketBuffer
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   119
 */
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   120
NetworkPacketBuffer::NetworkPacketBuffer (char *buf_ptr, size_t buf_size, size_t data_size) :
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   121
    buf_ptr(buf_ptr), buf_size(buf_size), data_size(data_size), offset(0) {
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   122
    
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   123
    // nothing
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   124
    if (buf_ptr == NULL)
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   125
        throw NetworkPacketError("buf_ptr may not be NULL");
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   126
}
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   127
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   128
void NetworkPacketBuffer::check_write_size (size_t item_size) {
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   129
     if (offset + item_size > buf_size)
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   130
        throw NetworkPacketError("not enough space to write");
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   131
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   132
}
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   133
        
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   134
void NetworkPacketBuffer::check_read_size (size_t item_size) {
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   135
    if (offset + item_size > data_size)
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   136
        throw NetworkPacketError("not enough data to read");
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   137
}
387
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   138
       
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   139
const void* NetworkPacketBuffer::read_ptr (size_t len) {
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   140
    // check buffer overflow
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   141
    check_write_size(len);
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   142
387
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   143
    // pointer value...
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   144
    const void *ptr = buf_ptr + offset;
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   145
    
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   146
    // update offset
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   147
    offset += len;
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   148
    
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   149
    // return pointer
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   150
    return ptr;
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   151
}
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   152
        
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   153
void* NetworkPacketBuffer::write_ptr (size_t len) {
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   154
    // check buffer overflow
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   155
    check_write_size(len);
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   156
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   157
    // pointer value...
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   158
    void *ptr = buf_ptr + offset;
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   159
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   160
    // update offset and size
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   161
    offset += len;
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   162
    data_size += len;
387
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   163
    
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   164
    // return pointer
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   165
    return ptr;
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   166
}
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   167
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   168
void NetworkPacketBuffer::read (void *ptr, size_t len) {
387
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   169
    // get input pointer...
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   170
    const void *input_ptr = read_ptr(len);
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   171
387
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   172
    // copy value out
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   173
    memcpy(ptr, input_ptr, len);
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   174
}
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   175
 
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   176
void NetworkPacketBuffer::write (const void *ptr, size_t len) {
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   177
    // get output pointer...
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   178
    void *output_ptr = write_ptr(len);
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   179
387
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   180
    // copy value in
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   181
    memcpy(output_ptr, ptr, len);
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   182
}
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   183
        
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   184
size_t NetworkPacketBuffer::tell_remaining (void) {
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   185
    // number of bytes in total - number of bytes read
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 365
diff changeset
   186
    return data_size - offset;
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   187
}
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   188
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   189
/*
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   190
 * NetworkPacket
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   191
 */
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   192
NetworkPacket::NetworkPacket (void) : 
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   193
    NetworkPacketBuffer(_buf, NETWORK_PACKET_SIZE, 0) 
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   194
{ 
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   195
    
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   196
}
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   197
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   198
/*
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   199
 * BigNetworkPacket
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   200
 */
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   201
BigNetworkPacket::BigNetworkPacket (size_t size) :
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   202
    NetworkPacketBuffer((char *) malloc(size), size, 0)
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   203
{
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   204
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   205
}
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   206
202
b3f5d766391e support sending of raw packets
terom
parents: 200
diff changeset
   207
BigNetworkPacket::~BigNetworkPacket (void) {
b3f5d766391e support sending of raw packets
terom
parents: 200
diff changeset
   208
    free(buf_ptr);
b3f5d766391e support sending of raw packets
terom
parents: 200
diff changeset
   209
}
b3f5d766391e support sending of raw packets
terom
parents: 200
diff changeset
   210