summaryrefslogtreecommitdiff
path: root/src/messagein.cpp
diff options
context:
space:
mode:
authorBjørn Lindeijer <bjorn@lindeijer.nl>2006-08-14 23:38:42 +0000
committerBjørn Lindeijer <bjorn@lindeijer.nl>2006-08-14 23:38:42 +0000
commitcaea63c835228efb23edf8755c60012cd2dfe1ce (patch)
tree1dbc0177cfbcfcfdd58f8abc928e64ffda15aa16 /src/messagein.cpp
parent0841923d1ebd1283e5b1d2cff48ed34f860f288b (diff)
downloadmanaserv-caea63c835228efb23edf8755c60012cd2dfe1ce.tar.gz
manaserv-caea63c835228efb23edf8755c60012cd2dfe1ce.tar.bz2
manaserv-caea63c835228efb23edf8755c60012cd2dfe1ce.tar.xz
manaserv-caea63c835228efb23edf8755c60012cd2dfe1ce.zip
Removed Packet class and the UNKNOWN gender.
Diffstat (limited to 'src/messagein.cpp')
-rw-r--r--src/messagein.cpp79
1 files changed, 32 insertions, 47 deletions
diff --git a/src/messagein.cpp b/src/messagein.cpp
index 54d74809..e0a4b27b 100644
--- a/src/messagein.cpp
+++ b/src/messagein.cpp
@@ -27,10 +27,9 @@
#include <enet/enet.h>
-#include "packet.h"
-
-MessageIn::MessageIn(Packet *packet):
- mPacket(packet),
+MessageIn::MessageIn(const char *data, int length):
+ mData(data),
+ mLength(length),
mPos(0)
{
// Read the message ID
@@ -39,78 +38,64 @@ MessageIn::MessageIn(Packet *packet):
MessageIn::~MessageIn()
{
- delete mPacket; // To be removed if the packet is deleted elsewhere.
}
char MessageIn::readByte()
{
char value = -1;
- if (mPacket)
+ if (mPos < mLength)
{
- if (mPos < mPacket->length)
- {
- value = mPacket->data[mPos];
- }
- mPos += 1;
+ value = mData[mPos];
}
+ mPos += 1;
return value;
}
short MessageIn::readShort()
{
short value = -1;
- if (mPacket)
+ if (mPos + 2 <= mLength)
{
- if (mPos + 2 <= mPacket->length)
- {
- uint16_t t;
- memcpy(&t, mPacket->data + mPos, 2);
- value = ENET_NET_TO_HOST_16(t);
- }
- mPos += 2;
+ uint16_t t;
+ memcpy(&t, mData + mPos, 2);
+ value = ENET_NET_TO_HOST_16(t);
}
+ mPos += 2;
return value;
}
long MessageIn::readLong()
{
long value = -1;
- if (mPacket)
+ if (mPos + 4 <= mLength)
{
- if (mPos + 4 <= mPacket->length)
- {
- uint32_t t;
- memcpy(&t, mPacket->data + mPos, 4);
- value = ENET_NET_TO_HOST_32(t);
- }
- mPos += 4;
+ uint32_t t;
+ memcpy(&t, mData + mPos, 4);
+ value = ENET_NET_TO_HOST_32(t);
}
+ mPos += 4;
return value;
}
std::string MessageIn::readString(int length)
{
- if (mPacket)
- {
- // Get string length
- if (length < 0) {
- length = readShort();
- }
-
- // Make sure the string isn't erroneous
- if (length < 0 || mPos + length > mPacket->length) {
- mPos = mPacket->length + 1;
- return "";
- }
+ // Get string length
+ if (length < 0) {
+ length = readShort();
+ }
- // Read the string
- char const *stringBeg = mPacket->data + mPos;
- char const *stringEnd = (char const *)memchr(stringBeg, '\0', length);
- std::string readString(stringBeg,
- stringEnd ? stringEnd - stringBeg : length);
- mPos += length;
- return readString;
+ // Make sure the string isn't erroneous
+ if (length < 0 || mPos + length > mLength) {
+ mPos = mLength + 1;
+ return "";
}
- return "";
+ // Read the string
+ char const *stringBeg = mData + mPos;
+ char const *stringEnd = (char const *)memchr(stringBeg, '\0', length);
+ std::string readString(stringBeg,
+ stringEnd ? stringEnd - stringBeg : length);
+ mPos += length;
+
+ return readString;
}