summaryrefslogtreecommitdiff
path: root/src/net/manaserv/messageout.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/manaserv/messageout.h')
-rw-r--r--src/net/manaserv/messageout.h51
1 files changed, 47 insertions, 4 deletions
diff --git a/src/net/manaserv/messageout.h b/src/net/manaserv/messageout.h
index 59fc148f..d452f784 100644
--- a/src/net/manaserv/messageout.h
+++ b/src/net/manaserv/messageout.h
@@ -22,21 +22,57 @@
#ifndef NET_MANASERV_MESSAGEOUT_H
#define NET_MANASERV_MESSAGEOUT_H
-#include "net/messageout.h"
+#include "net/manaserv/manaserv_protocol.h"
+
+#include <cstdint>
+#include <string>
namespace ManaServ {
-class MessageOut : public Net::MessageOut
+/**
+ * Used for building an outgoing message to manaserv.
+ *
+ * \ingroup Network
+ */
+class MessageOut
{
public:
MessageOut(uint16_t id);
~MessageOut();
+ /**
+ * Writes an unsigned 8-bit integer to the message.
+ */
+ void writeInt8(uint8_t value);
+
+ /**
+ * Writes an unsigned 16-bit integer to the message.
+ */
void writeInt16(uint16_t value);
+
+ /**
+ * Writes an unsigned 32-bit integer to the message.
+ */
void writeInt32(uint32_t value);
- protected:
+ /**
+ * Writes a string. If a fixed length is not given (-1), it is stored
+ * as a short at the start of the string.
+ */
+ void writeString(const std::string &string, int length = -1);
+
+ /**
+ * Returns the content of the message.
+ */
+ char *getData() const { return mData; }
+
+ /**
+ * Returns the length of the data.
+ */
+ unsigned int getDataSize() const { return mDataSize; }
+
+ private:
/**
* Expand the packet data to be able to hold more data.
*
@@ -45,8 +81,15 @@ class MessageOut : public Net::MessageOut
* added.
*/
void expand(size_t size);
+
+ void writeValueType(ManaServ::ValueType type);
+
+ char *mData; /**< Data building up. */
+ unsigned int mPos; /**< Position in the data. */
+ unsigned int mDataSize; /**< Size of data. */
+ bool mDebugMode; /**< Include debugging information. */
};
-}
+} // namespace ManaServ
#endif // NET_MANASERV_MESSAGEOUT_H