diff options
author | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2012-04-08 17:37:02 +0200 |
---|---|---|
committer | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2012-05-05 22:30:00 +0200 |
commit | 96abc4a9658b3318d0052dc5cd31a3c15d76a494 (patch) | |
tree | ff1d8e02b5020a08c01ab1605b0474a48eb77c42 /src/net/tmwa/messageout.h | |
parent | e9eda63dcad0b842d637c13e415ef4f751ea2adf (diff) | |
download | mana-96abc4a9658b3318d0052dc5cd31a3c15d76a494.tar.gz mana-96abc4a9658b3318d0052dc5cd31a3c15d76a494.tar.bz2 mana-96abc4a9658b3318d0052dc5cd31a3c15d76a494.tar.xz mana-96abc4a9658b3318d0052dc5cd31a3c15d76a494.zip |
Removed the shared base classes of MessageIn and MessageOut
There wasn't a whole lot gained by sharing a common base class, and it makes
extending the manaserv Message{In,Out} classes with a debugging mode
unnecessarily complicated.
Reviewed-by: Yohann Ferreira
Diffstat (limited to 'src/net/tmwa/messageout.h')
-rw-r--r-- | src/net/tmwa/messageout.h | 48 |
1 files changed, 44 insertions, 4 deletions
diff --git a/src/net/tmwa/messageout.h b/src/net/tmwa/messageout.h index d30fd1ec..dd2b84cc 100644 --- a/src/net/tmwa/messageout.h +++ b/src/net/tmwa/messageout.h @@ -22,37 +22,77 @@ #ifndef NET_TA_MESSAGEOUT_H #define NET_TA_MESSAGEOUT_H -#include "net/messageout.h" +#include <cstdint> +#include <string> namespace TmwAthena { class Network; /** - * Used for building an outgoing message. + * Used for building an outgoing message to eAthena. * * \ingroup Network */ -class MessageOut : public Net::MessageOut +class MessageOut { public: MessageOut(uint16_t id); + /** + * 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); /** + * 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); + + /** * Encodes coordinates and direction in 3 bytes. */ void writeCoordinates(uint16_t x, uint16_t y, uint8_t direction); + /** + * 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. + * + * NOTE: For performance enhancements this method could allocate extra + * memory in advance instead of expanding size every time more data is + * added. + */ void expand(size_t size); Network *mNetwork; + + char *mData; /**< Data building up. */ + unsigned int mDataSize; /**< Size of data. */ + unsigned int mPos; /**< Position in the data. */ }; -} +} // namespace TmwAthena #endif // NET_TA_MESSAGEOUT_H |