src/Network/Packet.hh
author Tero Marttila <terom@fixme.fi>
Fri, 16 Jan 2009 22:03:49 +0200
changeset 400 d64bf28c4340
parent 391 59c2499fe7bb
child 417 c503e0c6a740
permissions -rw-r--r--
more documentation tweaking, all Network/ files now have a @file comment. Fix Platform.h -> Platform.hh, and Buffer.hh + Packet.cc
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
     1
#ifndef NETWORK_PACKET_HH
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
     2
#define NETWORK_PACKET_HH
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
     3
400
d64bf28c4340 more documentation tweaking, all Network/ files now have a @file comment. Fix Platform.h -> Platform.hh, and Buffer.hh + Packet.cc
Tero Marttila <terom@fixme.fi>
parents: 391
diff changeset
     4
/**
d64bf28c4340 more documentation tweaking, all Network/ files now have a @file comment. Fix Platform.h -> Platform.hh, and Buffer.hh + Packet.cc
Tero Marttila <terom@fixme.fi>
parents: 391
diff changeset
     5
 * @file
d64bf28c4340 more documentation tweaking, all Network/ files now have a @file comment. Fix Platform.h -> Platform.hh, and Buffer.hh + Packet.cc
Tero Marttila <terom@fixme.fi>
parents: 391
diff changeset
     6
 *
d64bf28c4340 more documentation tweaking, all Network/ files now have a @file comment. Fix Platform.h -> Platform.hh, and Buffer.hh + Packet.cc
Tero Marttila <terom@fixme.fi>
parents: 391
diff changeset
     7
 * Provides the NetworkPackets that are used to communicate over a NetworkTCP/NetworkUDP sockets.
d64bf28c4340 more documentation tweaking, all Network/ files now have a @file comment. Fix Platform.h -> Platform.hh, and Buffer.hh + Packet.cc
Tero Marttila <terom@fixme.fi>
parents: 391
diff changeset
     8
 */
d64bf28c4340 more documentation tweaking, all Network/ files now have a @file comment. Fix Platform.h -> Platform.hh, and Buffer.hh + Packet.cc
Tero Marttila <terom@fixme.fi>
parents: 391
diff changeset
     9
186
0738f2949a2b move src/Network% to src/Network/%
terom
parents: 185
diff changeset
    10
#include "Config.hh"
300
417183866f35 suicide key and respawning
terom
parents: 296
diff changeset
    11
#include "../Types.hh"
186
0738f2949a2b move src/Network% to src/Network/%
terom
parents: 185
diff changeset
    12
#include "../Error.hh"
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    13
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    14
/**
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    15
 * Base class of errors thrown by NetworkPacket* methods
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    16
 */
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    17
class NetworkPacketError : public Error {
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    18
    public:
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    19
        NetworkPacketError (const std::string &message) : Error(message) { }
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
// forward-declare for write_packet
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    23
class NetworkPacketBuffer;
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    24
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    25
/**
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    26
 * Read-interface for network packets
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    27
 */
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    28
class NetworkPacketInput {
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    29
    public:
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    30
        /**
387
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
    31
         * Abstract method to get a pointer to \a len bytes of raw in-memory binary data, advancing the read offset
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
    32
         *
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
    33
         * @param len the number of bytes to consume
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
    34
         */
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
    35
        virtual const void* read_ptr (size_t len) = 0;
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
    36
 
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
    37
        /**
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    38
         * Abstract method that copies len bytes from the packet to ptr, first testing that they exist
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    39
         */
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    40
        virtual void read (
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    41
                void *ptr,      //<<< where to copy
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    42
                size_t len      //<<< number of bytes to copy
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    43
        ) = 0;
391
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
    44
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
    45
        /**
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
    46
         * Abstract method to get the number of input bytes remaining.
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
    47
         *
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
    48
         * @return number of input bytes still readable
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
    49
         */
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
    50
        virtual size_t tell_remaining (void) = 0;
387
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
    51
      
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    52
        /**
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    53
         * Convenience function to read() and return the value of the given type
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    54
         *
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    55
         * @return T The value
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    56
         */
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    57
        template <typename T> T read_val (void);
296
4d3ebaa29430 add separate Types.hh, and fix projectile-worm collisions on network
terom
parents: 284
diff changeset
    58
        
4d3ebaa29430 add separate Types.hh, and fix projectile-worm collisions on network
terom
parents: 284
diff changeset
    59
        // @{
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    60
        /**
296
4d3ebaa29430 add separate Types.hh, and fix projectile-worm collisions on network
terom
parents: 284
diff changeset
    61
         * Collection of methods to write out simple types, these convert from network-endianness and return the value
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    62
         */
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    63
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    64
        /** 32-bit unsigned int */
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    65
        uint32_t read_uint32 (void);
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    66
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    67
        /** 16-bit unsigned int */
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    68
        uint16_t read_uint16 (void);
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    69
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    70
        /** 8-bit unsigned int */
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    71
        uint8_t read_uint8 (void);
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    72
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    73
        /** 32-bit signed int */
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    74
        int32_t read_int32 (void);
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    75
        
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    76
        /** 16-bit signed int */
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    77
        int16_t read_int16 (void);
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    78
        
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    79
        /** 8-bit signed int */
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    80
        int8_t read_int8 (void);
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    81
        
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    82
        /** 32-bit float */
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
    83
        float read_float32 (void);
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    84
296
4d3ebaa29430 add separate Types.hh, and fix projectile-worm collisions on network
terom
parents: 284
diff changeset
    85
        // @}
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    86
        
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    87
        /**
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    88
         * Read a Vector from the packet:
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    89
         *  float32     vec_x
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    90
         *  float32     vec_y
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    91
         *
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    92
         * @return Vector (vec_x, vec_y)
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
    93
         */
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
    94
        Vector read_vector (void);
387
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
    95
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
    96
        /**
391
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
    97
         * Read compressed data written with write_compressed. The given buffer must be the same size as passed to
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
    98
         * write_compressed. Returns the number of bytes that were decompressed into buf.
387
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
    99
         */
391
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
   100
        size_t read_uncompressed (void *buf, size_t len);
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   101
};
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   102
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   103
/**
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   104
 * Write-interface for network packets
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   105
 */
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   106
class NetworkPacketOutput {
391
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
   107
    protected:
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
   108
        /**
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
   109
         * Adjust size of the most recent write_ptr area of buf_len bytes to data_len bytes.
400
d64bf28c4340 more documentation tweaking, all Network/ files now have a @file comment. Fix Platform.h -> Platform.hh, and Buffer.hh + Packet.cc
Tero Marttila <terom@fixme.fi>
parents: 391
diff changeset
   110
         *
d64bf28c4340 more documentation tweaking, all Network/ files now have a @file comment. Fix Platform.h -> Platform.hh, and Buffer.hh + Packet.cc
Tero Marttila <terom@fixme.fi>
parents: 391
diff changeset
   111
         * You must not call write() between calls to write_ptr() and write_ptr_adjust(). This is only valid for the
d64bf28c4340 more documentation tweaking, all Network/ files now have a @file comment. Fix Platform.h -> Platform.hh, and Buffer.hh + Packet.cc
Tero Marttila <terom@fixme.fi>
parents: 391
diff changeset
   112
         * most recent write_ptr()
391
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
   113
         */
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
   114
        virtual void write_ptr_adjust (size_t buf_len, size_t data_len) = 0;
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
   115
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   116
    public:    
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   117
        /**
387
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   118
         * Abstract method to get a pointer to \a len bytes of raw in-memory binary data, advancing the write offset
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   119
         *
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   120
         * @param len number of bytes to commit
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   121
         */
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   122
        virtual void* write_ptr (size_t len) = 0;
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   123
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   124
        /**
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   125
         * Abstract method that copies len bytes from ptr to the packet, first testing that they fit
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   126
         */
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   127
        virtual void write (
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   128
                const void *ptr,    //<<< where to copy from
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   129
                size_t len          //<<< number of bytes to copy
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   130
        ) = 0;
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   131
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   132
        /**
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   133
         * Convenience function to write() the value of the given type-value
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   134
         *
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   135
         * @param val The value
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   136
         */
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   137
        template <typename T> void write_val (const T &val);
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   138
        
296
4d3ebaa29430 add separate Types.hh, and fix projectile-worm collisions on network
terom
parents: 284
diff changeset
   139
        // @{        
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   140
        /**
296
4d3ebaa29430 add separate Types.hh, and fix projectile-worm collisions on network
terom
parents: 284
diff changeset
   141
         * Collection of methods to write out simple types, these convert the given value to network-byte-order
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   142
         */
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   143
        void write_uint32 (uint32_t val);
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   144
        void write_uint16 (uint16_t val);
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   145
        void write_uint8 (uint8_t val);
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   146
        void write_int32 (int32_t val);
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   147
        void write_int16 (int16_t val);
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   148
        void write_int8 (int8_t val);
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   149
        void write_float32 (float val);
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   150
        
296
4d3ebaa29430 add separate Types.hh, and fix projectile-worm collisions on network
terom
parents: 284
diff changeset
   151
        // @{ 
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   152
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   153
        /**
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   154
         * Write a vector to the packet:
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   155
         *  float32     vec_x
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   156
         *  float32     vec_y
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   157
         *
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   158
         *  @param vec a Vector(vec_x, vec_y)
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   159
         */
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   160
        void write_vector (const Vector &vec);
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   161
        
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   162
        /**
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   163
         * This write()s the contents of the given NetworkPacketBuffer to this packet.
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   164
         *
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   165
         * @param pkt the sub-packet to write()
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
        void write_packet (const NetworkPacketBuffer &pkt);
391
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
   168
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
   169
        /**
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
   170
         * This will compress the given data buffer into this packet for reading with read_compressed. The compressed
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
   171
         * data will use at most write_compressed_size(len) bytes of data.
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
   172
         */
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
   173
        void write_compressed (const void *ptr, uint32_t len);
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
   174
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
   175
        /**
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
   176
         * Return upper bound on packet size of compressed data, including header.
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
   177
         */
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
   178
        static size_t write_compressed_size (uint32_t len);
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   179
};
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   180
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   181
/**
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   182
 * Implements an in-memory seekable buffer used by NetworkPackets
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   183
 *
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   184
 * @see NetworkPacketInput
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   185
 * @see NetworkPacketOutput
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   186
 */
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   187
class NetworkPacketBuffer : public NetworkPacketInput, public NetworkPacketOutput {
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   188
    protected:
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   189
        /**
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   190
         * Pointer to the packet data
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   191
         */
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   192
        char *buf_ptr;
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   193
        
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   194
        /**
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   195
         * The size of the memory region pointed to by buf_ptr
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   196
         */
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   197
        size_t buf_size;
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   198
        
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   199
        /**
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   200
         * The number of bytes of read()-able data stored at buf_ptr
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   201
         */
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   202
        size_t data_size;
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   203
        
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   204
        /**
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   205
         * The current offset at which to run the next read/write
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   206
         */
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   207
        size_t offset;
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   208
        
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   209
        /**
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   210
         * Assert that the given number of bytes fits into the buffer at offset. Throws NetworkPacketError if not.
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   211
         *
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   212
         * The default implementation just checks offset and buf_size
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   213
         *
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   214
         * @param item_size the size of the item that should to be written
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   215
         */
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   216
        virtual void check_write_size (size_t item_size);
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   217
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   218
        /**
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   219
         * Assert that the given number of bytes is available from the buffer. Throws NetworkPacketError if not
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   220
         *
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   221
         * The default implementation just checks offset and data_size
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   222
         *
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   223
         * @param item_size the size of the item that should be read
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   224
         */
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   225
        virtual void check_read_size (size_t item_size);
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   226
         
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   227
    public:
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   228
        /**
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   229
         * Construct the NetworkPacketBuffer using the given buf_ptr, buf_size and data_size
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   230
         */
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   231
        NetworkPacketBuffer (char *buf_ptr, size_t buf_size, size_t data_size);
387
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   232
 
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   233
        /**
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   234
         * Returns a read-only pointer to \a len bytes of internal buffer memory, calling check_read_size first and
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   235
         * updating offset
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   236
         *
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   237
         * @param len number of bytes from the buffer to consume
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   238
         */
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   239
        virtual const void* read_ptr (size_t len);
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   240
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   241
        /**
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   242
         * Returns a read-write pointer to \a len bytes of internal buffer memory, calling check_write_size first and
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   243
         * updating offset+data_size
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   244
         *
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   245
         * @param len number of bytes in the buffer to commit
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   246
         */
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   247
        virtual void* write_ptr (size_t len);
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   248
       
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   249
        /**
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   250
         * Copy bytes from the packet buffer to ptr using memcpy(), calling check_read_size first.
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   251
         *
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   252
         * @param ptr where to copy the data to
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   253
         * @param len number of bytes to copy
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   254
         */
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   255
        virtual void read (void *ptr, size_t len);
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   256
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   257
        /**
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   258
         * Copy bytes from ptr to the packet buffer using memcpy(), calling check_write_size first
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   259
         *
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   260
         * @param ptr where to copy the data from
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   261
         * @param len number of bytes to copy
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   262
         */
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   263
        virtual void write (const void *ptr, size_t len);
387
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   264
        
391
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
   265
        virtual void write_ptr_adjust (size_t buf_len, size_t data_len);
59c2499fe7bb add compressed read/write NetworkPacket API and move zlib stuff out of NetworkServer/Client
Tero Marttila <terom@fixme.fi>
parents: 387
diff changeset
   266
        
387
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   267
        /**
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   268
         * Returns our data_size - read-offset
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   269
         */
294ce7ae8140 dirty implementation of compressed terrain array data
terom
parents: 300
diff changeset
   270
        virtual size_t tell_remaining (void);
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   271
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   272
        /*
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   273
         * Accessor functions, used by the actual socket code to read/write the buffer
400
d64bf28c4340 more documentation tweaking, all Network/ files now have a @file comment. Fix Platform.h -> Platform.hh, and Buffer.hh + Packet.cc
Tero Marttila <terom@fixme.fi>
parents: 391
diff changeset
   274
         *
d64bf28c4340 more documentation tweaking, all Network/ files now have a @file comment. Fix Platform.h -> Platform.hh, and Buffer.hh + Packet.cc
Tero Marttila <terom@fixme.fi>
parents: 391
diff changeset
   275
         * XXX: own abstract class for these? Virtual methods <3
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   276
         */
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   277
        char* get_buf (void) { return buf_ptr; }
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   278
        const char* get_buf (void) const { return buf_ptr; }
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   279
        size_t get_data_size (void) const { return data_size; }
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   280
        size_t get_buf_size (void) const { return buf_size; }
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   281
        
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   282
        /**
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   283
         * If the contents of buf_ptr is replaced with a new packet, call this to update offset/data_size
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   284
         *
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   285
         * @param size new amount of data in the buffer
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   286
         */
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   287
        void set_data_size (size_t size) { offset = 0; data_size = size; }
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   288
};
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   289
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   290
/**
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   291
 * The common case is a packet that fits in a single UDP packet, so this just uses a static buffer of a fixed size,
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   292
 * NETWORK_PACKET_SIZE.
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   293
 *
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   294
 * @see NetworkPacketBuffer
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   295
 * @see NETWORK_PACKET_SIZE
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   296
 */
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   297
class NetworkPacket : public NetworkPacketBuffer {
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   298
    private:
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   299
        /**
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   300
         * The static buffer, NETWORK_PACKET_SIZE bytes
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   301
         */
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   302
        char _buf[NETWORK_PACKET_SIZE];
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   303
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   304
    public:
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   305
        NetworkPacket (void);
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   306
};
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   307
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   308
/**
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   309
 * This is intended for sending bigger packets via TCP; a buffer of the given size is allocated on the heap.
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   310
 *
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   311
 * @see NetworkPacketBuffer
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   312
 */
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   313
class BigNetworkPacket : public NetworkPacketBuffer {
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   314
    public:
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   315
        /**
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   316
         * Allocates a buffer of the given size on the heap and uses it for NetworkPacketBuffer
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   317
         */
200
2dbf40661580 better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents: 186
diff changeset
   318
        BigNetworkPacket (size_t size);
202
b3f5d766391e support sending of raw packets
terom
parents: 200
diff changeset
   319
b3f5d766391e support sending of raw packets
terom
parents: 200
diff changeset
   320
    private:
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   321
        /**
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   322
         * Object must not be copied
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   323
         */
202
b3f5d766391e support sending of raw packets
terom
parents: 200
diff changeset
   324
        BigNetworkPacket (const BigNetworkPacket &pkt);
b3f5d766391e support sending of raw packets
terom
parents: 200
diff changeset
   325
        BigNetworkPacket& operator= (const BigNetworkPacket &pkt);
b3f5d766391e support sending of raw packets
terom
parents: 200
diff changeset
   326
203
3ec7ab40755f send initial terrain data to clients using a new NETCHAN_TERRAIN_ARRAY channel using raw BigNetworkPacket
terom
parents: 202
diff changeset
   327
    public:
284
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   328
        /**
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   329
         * Frees the heap buffer
27ce69fd1e06 work on Network doxygen docs
terom
parents: 203
diff changeset
   330
         */
202
b3f5d766391e support sending of raw packets
terom
parents: 200
diff changeset
   331
        virtual ~BigNetworkPacket (void);
185
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   332
};
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   333
25becd2cb026 that's not a prototype anymore... at least it shouldn't be
terom
parents:
diff changeset
   334
#endif /* NETWORK_PACKET_HH */