summaryrefslogtreecommitdiff
path: root/src/net/messageout.cpp
diff options
context:
space:
mode:
authorBjörn Steinbrink <B.Steinbrink@gmx.de>2006-01-22 13:31:13 +0000
committerBjörn Steinbrink <B.Steinbrink@gmx.de>2006-01-22 13:31:13 +0000
commitbd56bf8afdab16383ed8ad08412a8c807f84af85 (patch)
tree0e963ada63bcbe3c50dd77986aaa15b9ba49816a /src/net/messageout.cpp
parent5359640b6f271af31f6423df9d661433eff89a3e (diff)
downloadmana-bd56bf8afdab16383ed8ad08412a8c807f84af85.tar.gz
mana-bd56bf8afdab16383ed8ad08412a8c807f84af85.tar.bz2
mana-bd56bf8afdab16383ed8ad08412a8c807f84af85.tar.xz
mana-bd56bf8afdab16383ed8ad08412a8c807f84af85.zip
Merged NETWORK branch (includes BEING_OVERHAUL).
Diffstat (limited to 'src/net/messageout.cpp')
-rw-r--r--src/net/messageout.cpp49
1 files changed, 8 insertions, 41 deletions
diff --git a/src/net/messageout.cpp b/src/net/messageout.cpp
index 9b27a6a5..f6ed5de6 100644
--- a/src/net/messageout.cpp
+++ b/src/net/messageout.cpp
@@ -30,63 +30,42 @@
#include "network.h"
#include "packet.h"
-MessageOut::MessageOut():
- mPacket(0),
+MessageOut::MessageOut(Network *network):
+ mNetwork(network),
mData(0),
mDataSize(0),
mPos(0)
{
- mData = out + out_size;
-}
-
-MessageOut::~MessageOut()
-{
- if (mPacket) {
- delete mPacket;
- }
-
- // Don't free this data for now, see above.
- //if (mData) {
- // free(mData);
- //}
-}
-
-void MessageOut::expand(size_t bytes)
-{
- /*mData = (char*)realloc(mData, bytes);
- mDataSize = bytes;*/
+ mData = mNetwork->mOutBuffer + mNetwork->mOutSize;
}
void MessageOut::writeInt8(Sint8 value)
{
- expand(mPos + sizeof(Sint8));
mData[mPos] = value;
mPos += sizeof(Sint8);
- out_size += sizeof(Sint8);
+ mNetwork->mOutSize+= sizeof(Sint8);
}
void MessageOut::writeInt16(Sint16 value)
{
- expand(mPos + sizeof(Sint16));
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
(*(Sint16 *)(mData + mPos)) = SDL_Swap16(value);
#else
(*(Sint16 *)(mData + mPos)) = value;
#endif
mPos += sizeof(Sint16);
- out_size += sizeof(Sint16);
+ mNetwork->mOutSize += sizeof(Sint16);
}
void MessageOut::writeInt32(Sint32 value)
{
- expand(mPos + sizeof(Sint32));
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
(*(Sint32 *)(mData + mPos)) = SDL_Swap32(value);
#else
(*(Sint32 *)(mData + mPos)) = value;
#endif
mPos += sizeof(Sint32);
- out_size += sizeof(Sint32);
+ mNetwork->mOutSize += sizeof(Sint32);
}
void MessageOut::writeString(const std::string &string, int length)
@@ -97,39 +76,27 @@ void MessageOut::writeString(const std::string &string, int length)
{
// Write the length at the start if not fixed
writeInt16(string.length());
- expand(mPos + string.length());
}
else
{
// Make sure the length of the string is no longer than specified
toWrite = string.substr(0, length);
- expand(mPos + length);
}
// Write the actual string
memcpy(&mData[mPos], (void*)toWrite.c_str(), toWrite.length());
mPos += toWrite.length();
- out_size += toWrite.length();
+ mNetwork->mOutSize += toWrite.length();
// Pad remaining space with zeros
if (length > (int)toWrite.length())
{
memset(&mData[mPos], '\0', length - toWrite.length());
mPos += length - toWrite.length();
- out_size += length - toWrite.length();
+ mNetwork->mOutSize += length - toWrite.length();
}
}
-const Packet *MessageOut::getPacket()
-{
- if (!mPacket)
- {
- mPacket = new Packet(mData, mDataSize);
- }
-
- return mPacket;
-}
-
MessageOut& operator<<(MessageOut &msg, const Sint8 &rhs)
{
msg.writeInt8(rhs);