diff options
author | megamage <none@none> | 2009-08-19 16:54:52 -0500 |
---|---|---|
committer | megamage <none@none> | 2009-08-19 16:54:52 -0500 |
commit | edc05f2c19b320ea28536ea963c16266a152d1b4 (patch) | |
tree | 5a9d4179887932bd05b8392e6064a815003b97f1 /src/shared/ByteBuffer.h | |
parent | 012d6fa865fb8083dcbeae9b04926527b3c19f4e (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.h | 26 |
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); |