aboutsummaryrefslogtreecommitdiff
path: root/src/shared/ByteBuffer.h
diff options
context:
space:
mode:
authormegamage <none@none>2009-08-19 16:54:52 -0500
committermegamage <none@none>2009-08-19 16:54:52 -0500
commitedc05f2c19b320ea28536ea963c16266a152d1b4 (patch)
tree5a9d4179887932bd05b8392e6064a815003b97f1 /src/shared/ByteBuffer.h
parent012d6fa865fb8083dcbeae9b04926527b3c19f4e (diff)
[8382] Implement ByteArray functions for skip read of fields not needed for server in received packets. Author: VladimirMangos
* Use this fucntions in some case. * Change some packets to form: read fields first check later for better control recieved packets structure. * Fix CMSG_STAND_STATE_CHANGE packet structure to more correct. --HG-- branch : trunk
Diffstat (limited to 'src/shared/ByteBuffer.h')
-rw-r--r--src/shared/ByteBuffer.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/shared/ByteBuffer.h b/src/shared/ByteBuffer.h
index 5e02afd86cf..d4842ec7515 100644
--- a/src/shared/ByteBuffer.h
+++ b/src/shared/ByteBuffer.h
@@ -261,6 +261,32 @@ class ByteBuffer
return _wpos;
}
+ template<typename T>
+ void read_skip() { read_skip(sizeof(T)); }
+
+ template<typename T1, typename T2>
+ void read_skip2() { read_skip(sizeof(T1)+sizeof(T2)); }
+
+ template<>
+ void read_skip<char*>()
+ {
+ uint8 size = read<uint8>();
+ read_skip(size);
+ }
+
+ template<>
+ void read_skip<char const*>() { read_skip<char*>(); }
+
+ template<>
+ void read_skip<std::string>() { read_skip<char*>(); }
+
+ void read_skip(size_t skip)
+ {
+ if(_rpos + skip > size())
+ throw ByteBufferException(false, _rpos, skip, size());
+ _rpos += skip;
+ }
+
template <typename T> T read()
{
T r = read<T>(_rpos);