summaryrefslogtreecommitdiff
path: root/src/net/messagein.h
diff options
context:
space:
mode:
authorEugenio Favalli <elvenprogrammer@gmail.com>2006-07-25 18:04:38 +0000
committerEugenio Favalli <elvenprogrammer@gmail.com>2006-07-25 18:04:38 +0000
commitc7e7b62aa94bf295ca1dc556762ad6070221e0cd (patch)
tree04f827df0df64a80e04a4115986609486d715237 /src/net/messagein.h
parentc0c8775271679ac4904bc0bc02a74d28fc75efd0 (diff)
downloadmana-c7e7b62aa94bf295ca1dc556762ad6070221e0cd.tar.gz
mana-c7e7b62aa94bf295ca1dc556762ad6070221e0cd.tar.bz2
mana-c7e7b62aa94bf295ca1dc556762ad6070221e0cd.tar.xz
mana-c7e7b62aa94bf295ca1dc556762ad6070221e0cd.zip
Switched client to use enet and modified login sequence to work with the new protocol from tmwserv.
Diffstat (limited to 'src/net/messagein.h')
-rw-r--r--src/net/messagein.h66
1 files changed, 23 insertions, 43 deletions
diff --git a/src/net/messagein.h b/src/net/messagein.h
index d97cd8b6..d5a7593f 100644
--- a/src/net/messagein.h
+++ b/src/net/messagein.h
@@ -1,5 +1,5 @@
/*
- * The Mana World
+ * The Mana World Server
* Copyright 2004 The Mana World Development Team
*
* This file is part of The Mana World.
@@ -21,21 +21,16 @@
* $Id$
*/
-#ifndef _TMW_MESSAGEIN_
-#define _TMW_MESSAGEIN_
+#ifndef _TMWSERV_MESSAGEIN_H_
+#define _TMWSERV_MESSAGEIN_H_
#include <string>
-#include <SDL_types.h>
/**
* Used for parsing an incoming message.
*/
class MessageIn
{
- friend Sint8& operator<<(Sint8 &lhs, MessageIn &msg);
- friend Sint16& operator<<(Sint16 &lhs, MessageIn &msg);
- friend Sint32& operator<<(Sint32 &lhs, MessageIn &msg);
-
public:
/**
* Constructor.
@@ -43,55 +38,40 @@ class MessageIn
MessageIn(const char *data, unsigned int length);
/**
- * Returns the message ID.
- */
- short
- getId() { return mId; }
-
- /**
- * Returns the message length.
- */
- unsigned int
- getLength() { return mLength; }
-
- Sint8 readInt8(); /**< Reads a byte. */
- Sint16 readInt16(); /**< Reads a short. */
- Sint32 readInt32(); /**< Reads a long. */
-
- /**
- * Reads a special 3 byte block used by eAthena, containing x and y
- * coordinates and direction.
+ * Destructor.
*/
- void
- readCoordinates(Uint16 &x, Uint16 &y, Uint8 &direction);
+ ~MessageIn();
- /**
- * Reads a special 5 byte block used by eAthena, containing a source
- * and destination coordinate pair.
- */
- void
- readCoordinatePair(Uint16 &srcX, Uint16 &srcY,
- Uint16 &dstX, Uint16 &dstY);
+ short getId() { return mId; } /**< Returns the message ID. */
- /**
- * Skips a given number of bytes.
- */
- void
- skip(unsigned int length);
+ char readByte(); /**< Reads a byte. */
+ short readShort(); /**< Reads a short. */
+ long readLong(); /**< Reads a long. */
/**
* Reads a string. If a length is not given (-1), it is assumed
* that the length of the string is stored in a short at the
* start of the string.
*/
- std::string
- readString(int length = -1);
+ std::string readString(int length = -1);
+
+ /**
+ * Returns the message length.
+ */
+ unsigned int
+ getLength() { return mLength; }
private:
const char* mData; /**< The message data. */
unsigned int mLength; /**< The length of the data. */
- unsigned int mPos; /**< The position in the data. */
short mId; /**< The message ID. */
+
+ /**
+ * Actual position in the packet. From 0 to packet->length.
+ * A value bigger than packet->length means EOP was reached when
+ * reading it.
+ */
+ unsigned int mPos;
};
#endif