removed CDataBuffer reliance

This commit is contained in:
David Anderson 2006-02-05 02:20:45 +00:00
parent 6324161b98
commit 8edd843f4b
4 changed files with 16 additions and 87 deletions

View File

@ -1,78 +0,0 @@
/* AMX Mod X
*
* by the AMX Mod X Development Team
* originally developed by OLO
*
*
* This program 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 (at
* your option) any later version.
*
* This program 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 this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* In addition, as a special exception, the author gives permission to
* link the code of this program with the Half-Life Game Engine ("HL
* Engine") and Modified Game Libraries ("MODs") developed by Valve,
* L.L.C ("Valve"). You must obey the GNU General Public License in all
* respects for all of the code used other than the HL Engine and MODs
* from Valve. If you modify this file, you may extend this exception
* to your version of the file, but you are not obligated to do so. If
* you do not wish to do so, delete this exception statement from your
* version.
*/
// Class by Pavol "PMOnoTo" Marko
#ifndef __CDATABUFFER_H__
#define __CDATABUFFER_H__
template <class T> class DataBuffer
{
T *m_pBuf;
size_t m_Size;
public:
DataBuffer()
{
m_pBuf = NULL;
m_Size = 0;
}
~DataBuffer()
{
if (m_pBuf)
delete [] m_pBuf;
}
operator T* ()
{
return m_pBuf;
}
bool resize(size_t newSize)
{
if (newSize > m_Size)
{
char *pNew = new T[newSize];
if (!pNew)
return false;
if (m_pBuf)
delete [] m_pBuf;
m_pBuf = pNew;
m_Size = newSize;
}
return true;
}
};
#endif // #ifndef __CDATABUFFER_H__

View File

@ -6,7 +6,7 @@ MM_ROOT = ../../metamod/metamod
### EDIT BELOW FOR OTHER PROJECTS ###
OPT_FLAGS = -O3 -funroll-loops -s -pipe
OPT_FLAGS = -O2 -funroll-loops -s -pipe
DEBUG_FLAGS = -g -ggdb3
CPP = gcc
NAME = sockets_amxx
@ -45,12 +45,12 @@ $(BIN_DIR)/%.o: %.cpp
all:
mkdir -p $(BIN_DIR)
mkdir -p $(BIN_DIR)/sdk
$(MAKE) sockets
$(MAKE) geoip
amd64:
$(MAKE) all AMD64=true
sockets: $(OBJ_LINUX)
geoip: $(OBJ_LINUX)
$(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
debug:

View File

@ -2026,7 +2026,7 @@ typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/);
typedef const char * (*PFN_FORMAT) (const char * /*fmt*/, ... /*params*/);
typedef void (*PFN_REGISTERFUNCTION) (void * /*pfn*/, const char * /*desc*/);
typedef int (*PFN_AMX_PUSH) (AMX * /*amx*/, cell /*value*/);
typedef int (*PFN_SET_TEAM_INFO) (int /*player */, int /*teamid */, const char */*name */);
typedef int (*PFN_SET_TEAM_INFO) (int /*player */, int /*teamid */, const char * /*name */);
extern PFN_ADD_NATIVES g_fn_AddNatives;
extern PFN_BUILD_PATHNAME g_fn_BuildPathname;

View File

@ -38,7 +38,6 @@
// AMX Headers
#include "amxxmodule.h"
#include "CDataBuffer.h"
#define SOCKET_TCP 1
#define SOCKET_UDP 2
@ -186,23 +185,30 @@ static cell AMX_NATIVE_CALL socket_send(AMX *amx, cell *params) /* 3 param */
return send(socket, data, len, 0);
}
static char *g_buffer = NULL;
static size_t g_buflen = 0;
// native socket_send2(_socket, _data[], _length);
static cell AMX_NATIVE_CALL socket_send2(AMX *amx, cell *params) /* 3 param */
{
// We get the string from amx
int len = params[3];
int socket = params[1];
static DataBuffer<char> buffer;
if (len > g_buflen)
{
delete [] g_buffer;
g_buffer = new char[len+1];
g_buflen = len;
}
buffer.resize(params[3]);
cell *pData = MF_GetAmxAddr(amx, params[2]);
char *pBuffer = buffer;
char *pBuffer = g_buffer;
while (len--)
*pBuffer++ = *pData++;
// And send it to the socket
return send(socket, buffer, params[3], 0);
return send(socket, g_buffer, params[3], 0);
}
AMX_NATIVE_INFO sockets_natives[] = {
@ -235,5 +241,6 @@ void OnAmxxDetach()
#ifdef _WIN32
WSACleanup();
#endif
delete [] g_buffer;
return;
}