diff options
author | Guillaume Melquiond <guillaume.melquiond@gmail.com> | 2006-12-29 13:43:24 +0000 |
---|---|---|
committer | Guillaume Melquiond <guillaume.melquiond@gmail.com> | 2006-12-29 13:43:24 +0000 |
commit | 291ad04d5b5c4ab08d85eadde116f968cd579b77 (patch) | |
tree | e4dced5715a5d9792cfdc0455a6b3ee6d3116079 /src/messageout.cpp | |
parent | 3d404e743105bb9168c89e3451cf35d7d59120b1 (diff) | |
download | manaserv-291ad04d5b5c4ab08d85eadde116f968cd579b77.tar.gz manaserv-291ad04d5b5c4ab08d85eadde116f968cd579b77.tar.bz2 manaserv-291ad04d5b5c4ab08d85eadde116f968cd579b77.tar.xz manaserv-291ad04d5b5c4ab08d85eadde116f968cd579b77.zip |
Physically split the server into one tmwserv-acount program (account +
chat + database) and multiple tmwserv-game programs (selected with
respect to the maps). Cleaned the repository by moving server-specific
source files into dedicated directories.
Diffstat (limited to 'src/messageout.cpp')
-rw-r--r-- | src/messageout.cpp | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/src/messageout.cpp b/src/messageout.cpp deleted file mode 100644 index 7b547bb1..00000000 --- a/src/messageout.cpp +++ /dev/null @@ -1,136 +0,0 @@ -/* - * The Mana World Server - * Copyright 2004 The Mana World Development Team - * - * This file is part of The Mana World. - * - * The Mana World is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * The Mana World is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with The Mana World; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * $Id$ - */ - -#include "messageout.h" - -#include <string> -#include <stdlib.h> -#include <iosfwd> - -#include <enet/enet.h> - -/** Initial amount of bytes allocated for the messageout data buffer. */ -const unsigned int INITIAL_DATA_CAPACITY = 16; - -/** Factor by which the messageout data buffer is increased when too small. */ -const unsigned int CAPACITY_GROW_FACTOR = 2; - -MessageOut::MessageOut(): - mPos(0) -{ - mData = (char*) malloc(INITIAL_DATA_CAPACITY); - mDataSize = INITIAL_DATA_CAPACITY; -} - -MessageOut::MessageOut(short id): - mPos(0) -{ - mData = (char*) malloc(INITIAL_DATA_CAPACITY); - mDataSize = INITIAL_DATA_CAPACITY; - - writeShort(id); -} - -MessageOut::~MessageOut() -{ - free(mData); -} - -void -MessageOut::expand(size_t bytes) -{ - if (bytes > mDataSize) - { - do - { - mDataSize *= CAPACITY_GROW_FACTOR; - } - while (bytes > mDataSize); - - mData = (char*) realloc(mData, mDataSize); - } -} - -void -MessageOut::writeByte(char value) -{ - expand(mPos + 1); - mData[mPos] = value; - mPos += 1; -} - -void -MessageOut::writeShort(short value) -{ - expand(mPos + 2); - uint16_t t = ENET_HOST_TO_NET_16(value); - memcpy(mData + mPos, &t, 2); - mPos += 2; -} - -void -MessageOut::writeLong(long value) -{ - expand(mPos + 4); - uint32_t t = ENET_HOST_TO_NET_32(value); - memcpy(mData + mPos, &t, 4); - mPos += 4; -} - -void MessageOut::writeCoordinates(int x, int y) -{ - expand(mPos + 3); - char *p = mData + mPos; - p[0] = x & 0x00FF; - p[1] = ((x & 0x0700) >> 8) | ((y & 0x001F) << 3); - p[2] = (y & 0x07E0) >> 5; - mPos += 3; -} - -void -MessageOut::writeString(const std::string &string, int length) -{ - int stringLength = string.length(); - if (length < 0) - { - // Write the length at the start if not fixed - writeShort(stringLength); - length = stringLength; - } - else if (length < stringLength) - { - // Make sure the length of the string is no longer than specified - stringLength = length; - } - expand(mPos + length); - - // Write the actual string - memcpy(mData + mPos, string.c_str(), stringLength); - - if (length > stringLength) - { - // Pad remaining space with zeros - memset(mData + mPos + stringLength, '\0', length - stringLength); - } - mPos += length; -} |