author | terom |
Mon, 15 Dec 2008 23:56:42 +0000 | |
changeset 378 | 5589abf5e61b |
parent 365 | 65295dfbbf64 |
child 380 | d193dd1d8a7e |
permissions | -rw-r--r-- |
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
1 |
#ifndef NETWORK_BUFFER_HH |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
2 |
#define NETWORK_BUFFER_HH |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
3 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
4 |
#include "Socket.hh" |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
5 |
#include "../Error.hh" |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
6 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
7 |
#include <cassert> |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
8 |
|
284 | 9 |
/** |
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
10 |
* Minimum chunk size to avoid handling single bytes at a time (for resize, mainly) |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
11 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
12 |
const size_t NETWORK_BUFFER_CHUNK_SIZE = 1024; |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
13 |
|
284 | 14 |
/** |
15 |
* Base class of errors thrown by NetworkBuffer* methods |
|
16 |
*/ |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
17 |
class NetworkBufferError : public Error { |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
18 |
public: |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
19 |
NetworkBufferError (const std::string &message) : Error(message) { } |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
20 |
}; |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
21 |
|
284 | 22 |
/** |
23 |
* Base buffer-manipulation operations for buffered socket send/recv |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
24 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
25 |
class NetworkBufferBase { |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
26 |
protected: |
284 | 27 |
/** The socket that we use */ |
378
5589abf5e61b
break the network code. Too late to set up a branch for this now
terom
parents:
365
diff
changeset
|
28 |
NetworkSocket *socket; |
284 | 29 |
|
30 |
/** The buffer itself */ |
|
31 |
char *buf; |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
32 |
|
284 | 33 |
/** Buffer size and current read/write offset */ |
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
34 |
size_t size, offset; |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
35 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
36 |
public: |
284 | 37 |
/** |
38 |
* Allocate buf using the given initial size, and set offset to zero |
|
39 |
*/ |
|
378
5589abf5e61b
break the network code. Too late to set up a branch for this now
terom
parents:
365
diff
changeset
|
40 |
NetworkBufferBase (NetworkSocket *socket, size_t size_hint); |
284 | 41 |
|
42 |
/** |
|
43 |
* Free()'s the buf |
|
44 |
*/ |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
45 |
~NetworkBufferBase (void); |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
46 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
47 |
private: |
284 | 48 |
/** |
49 |
* No copying, these are undefined |
|
50 |
*/ |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
51 |
NetworkBufferBase (const NetworkBufferBase ©); |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
52 |
NetworkBufferBase& operator= (const NetworkBufferBase ©); |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
53 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
54 |
protected: |
284 | 55 |
/** |
56 |
* Resize the buffer, allocating enough new space to hold <item_size> bytes at the end, and leaving any |
|
57 |
* existing data at the beginning in-place |
|
58 |
* |
|
59 |
* @param item_size the number of bytes that must fit at the end of the buffer |
|
60 |
*/ |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
61 |
void resize (size_t item_size); |
284 | 62 |
|
63 |
/** |
|
64 |
* Trim the buffer, discarding <prefix_size> bytes at the beginning. Updates offset to match. |
|
65 |
* |
|
66 |
* @param prefix_size the number of bytes to discard |
|
67 |
*/ |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
68 |
void trim (size_t prefix_size); |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
69 |
}; |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
70 |
|
284 | 71 |
/** |
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
72 |
* Buffered prefix-len socket input |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
73 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
74 |
class NetworkBufferInput : public NetworkBufferBase { |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
75 |
public: |
284 | 76 |
/** |
77 |
* @see NetworkBufferBase |
|
78 |
*/ |
|
378
5589abf5e61b
break the network code. Too late to set up a branch for this now
terom
parents:
365
diff
changeset
|
79 |
NetworkBufferInput (NetworkSocket *socket, size_t size_hint); |
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
80 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
81 |
private: |
284 | 82 |
/** |
83 |
* Attempts to recv the given number of bytes into our buf, returning true on success |
|
84 |
* |
|
85 |
* @param item_size minimum number of bytes of data that we need in the buffer |
|
86 |
* @return bool true if the buffer now contains at least item_size bytes |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
87 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
88 |
bool try_read (size_t item_size); |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
89 |
|
284 | 90 |
/** |
91 |
* Tests if the buffer contains at least the given amount of data, but doesn't recv or anything |
|
92 |
* |
|
93 |
* @param data_size number of bytes that we are expecting |
|
94 |
* @return bool true if the buffer contains at least data_size bytes |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
95 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
96 |
bool have_data (size_t data_size); |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
97 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
98 |
public: |
284 | 99 |
// @{ |
100 |
/** |
|
101 |
* |
|
102 |
* Attempts to read the length prefix into val_ref, returning true on success, false if there's not enough data |
|
103 |
* in the buffer |
|
104 |
* |
|
105 |
* @param val_ref stores the value read here if we have it |
|
106 |
* @return bool was val_ref set |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
107 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
108 |
bool peek_prefix (uint16_t &val_ref); |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
109 |
bool peek_prefix (uint32_t &val_ref); |
284 | 110 |
// @} |
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
111 |
|
284 | 112 |
/** |
113 |
* This attempts to read a length-prefix of the given type (using peek_prefix), and then the associated data. |
|
114 |
* If succesful, this sets prefix to the length of the data, and buf_ref to point at the data inside our buffer |
|
115 |
* and returns true, else false. |
|
116 |
* |
|
117 |
* This will try and consume data from the buffer, or recv if needed. |
|
118 |
* |
|
119 |
* @param prefix stores the data length here |
|
120 |
* @param buf_ref stores a pointer to the data here |
|
121 |
* @return bool true if we have the full data, false if we need to wait for more data on the socket |
|
122 |
* |
|
123 |
* @see peek_prefix |
|
124 |
* @see flush_data |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
125 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
126 |
template <typename PrefixType> bool peek_data (PrefixType &prefix, char *&buf_ref) { |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
127 |
size_t missing = 0; |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
128 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
129 |
do { |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
130 |
// do we have the prefix? |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
131 |
if (peek_prefix(prefix)) { |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
132 |
// do we already have the payload? |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
133 |
if (offset >= sizeof(PrefixType) + prefix) { |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
134 |
break; |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
135 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
136 |
} else { |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
137 |
missing = (sizeof(PrefixType) + prefix) - offset; |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
138 |
} |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
139 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
140 |
} else { |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
141 |
missing = sizeof(PrefixType); |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
142 |
} |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
143 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
144 |
// sanity-check |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
145 |
// XXX: a zero-prefix will trigger this |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
146 |
assert(missing); |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
147 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
148 |
// try and read the missing data |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
149 |
if (try_read(missing) == false) { |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
150 |
// if unable to read what we need, return zero. |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
151 |
return false; |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
152 |
} |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
153 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
154 |
// assess the situation again |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
155 |
} while (true); |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
156 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
157 |
// update the buf_ref to point past the prefix-length |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
158 |
buf_ref = buf + sizeof(PrefixType); |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
159 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
160 |
// return |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
161 |
return true; |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
162 |
} |
284 | 163 |
|
164 |
/** |
|
165 |
* This flushes a prefix-length worth of data from the buffer, i.e. it first reads the prefix, and then trims |
|
166 |
* the prefix and the data away. Don't call this unless you *know* that the buffer contains enough data. |
|
167 |
* |
|
168 |
* @see peek_data |
|
169 |
*/ |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
170 |
template <typename PrefixType> void flush_data (void) { |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
171 |
PrefixType prefix; |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
172 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
173 |
// we *must* have a valid prefix |
365 | 174 |
if (!peek_prefix(prefix)) |
175 |
assert(false); |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
176 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
177 |
// trim the bytes out |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
178 |
trim(sizeof(PrefixType) + prefix); |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
179 |
} |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
180 |
}; |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
181 |
|
284 | 182 |
/** |
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
183 |
* Buffered prefix-len socket output |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
184 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
185 |
class NetworkBufferOutput : public NetworkBufferBase { |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
186 |
public: |
284 | 187 |
/** |
188 |
* @see NetworkBufferBase |
|
189 |
*/ |
|
378
5589abf5e61b
break the network code. Too late to set up a branch for this now
terom
parents:
365
diff
changeset
|
190 |
NetworkBufferOutput (NetworkSocket *socket, size_t size_hint); |
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
191 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
192 |
private: |
284 | 193 |
/** |
194 |
* Write the given data to the socket, either now of later. |
|
195 |
* |
|
196 |
* If our buffer is empty, fast-path the given buf_ptr directly to send(), then copy the remaining portion to |
|
197 |
* our buffer for later use with flush_write. |
|
198 |
* |
|
199 |
* @param buf_ptr the data that we need to send |
|
200 |
* @param buf_size number of bytes in buf_ptr |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
201 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
202 |
void push_write (char *buf_ptr, size_t buf_size); |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
203 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
204 |
public: |
284 | 205 |
/** |
206 |
* If we have data in our buffer, flush it out using send(). |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
207 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
208 |
void flush_write (void); |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
209 |
|
284 | 210 |
// @{ |
211 |
/** |
|
212 |
* Write out the given data, writing first the prefix, and then the data itself, using push_write. |
|
213 |
* |
|
214 |
* @param buf the data to write |
|
215 |
* @param prefix the amount of data |
|
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
216 |
*/ |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
217 |
void write_prefix (char *buf, uint16_t prefix); |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
218 |
void write_prefix (char *buf, uint32_t prefix); |
284 | 219 |
// @} |
200
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
220 |
}; |
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
221 |
|
2dbf40661580
better NetworkBuffer/Packet stuff + some additional Physics+Network stuff + random fixes
terom
parents:
diff
changeset
|
222 |
#endif |