diff options
author | Andrei Karas <akaras@inbox.ru> | 2018-03-05 22:44:38 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2018-03-05 22:45:27 +0300 |
commit | b6cd136e3edf9d5c0eaaef47118ff1a72d7b0c75 (patch) | |
tree | faca6ca89481e93ee25caba81d23c6068f68dda2 | |
parent | 135fa01ee301fd878c93444999a625f64ccf76c1 (diff) | |
download | mv-b6cd136e3edf9d5c0eaaef47118ff1a72d7b0c75.tar.gz mv-b6cd136e3edf9d5c0eaaef47118ff1a72d7b0c75.tar.bz2 mv-b6cd136e3edf9d5c0eaaef47118ff1a72d7b0c75.tar.xz mv-b6cd136e3edf9d5c0eaaef47118ff1a72d7b0c75.zip |
Add method for read unsigned int 32 from packet.
-rw-r--r-- | src/net/messagein.cpp | 23 | ||||
-rw-r--r-- | src/net/messagein.h | 2 |
2 files changed, 24 insertions, 1 deletions
diff --git a/src/net/messagein.cpp b/src/net/messagein.cpp index 1e0ac22db..1226102d7 100644 --- a/src/net/messagein.cpp +++ b/src/net/messagein.cpp @@ -180,6 +180,27 @@ int32_t MessageIn::readInt32(const char *const str) memcpy(&value, mData + CAST_SIZE(mPos), sizeof(int32_t)); #endif // SDL_BYTEORDER == SDL_BIG_ENDIAN } + DEBUGLOG2("readInt32: " + toStringPrint(CAST_S32(value)), + mPos, str); + mPos += 4; + PacketCounters::incInBytes(4); + return value; +} + +uint32_t MessageIn::readUInt32(const char *const str) +{ + uint32_t value = -1; + if (mPos + 4 <= mLength) + { +#if SDL_BYTEORDER == SDL_BIG_ENDIAN + uint32_t swap; + memcpy(&swap, mData + CAST_SIZE(mPos), sizeof(int32_t)); + value = SDL_Swap32(swap); +#else // SDL_BYTEORDER == SDL_BIG_ENDIAN + + memcpy(&value, mData + CAST_SIZE(mPos), sizeof(int32_t)); +#endif // SDL_BYTEORDER == SDL_BIG_ENDIAN + } DEBUGLOG2("readInt32: " + toStringPrint(CAST_U32(value)), mPos, str); mPos += 4; @@ -189,7 +210,7 @@ int32_t MessageIn::readInt32(const char *const str) BeingId MessageIn::readBeingId(const char *const str) { - return fromInt(readInt32(str), BeingId); + return fromInt(readUInt32(str), BeingId); } int64_t MessageIn::readInt64(const char *const str) diff --git a/src/net/messagein.h b/src/net/messagein.h index e67dcbe8a..ea2caa499 100644 --- a/src/net/messagein.h +++ b/src/net/messagein.h @@ -78,6 +78,8 @@ class MessageIn notfinal /**< Reads a long. */ int32_t readInt32(const char *const str); + uint32_t readUInt32(const char *const str); + int64_t readInt64(const char *const str); BeingId readBeingId(const char *const str); |