mirror of
https://github.com/alliedmodders/amxmodx.git
synced 2024-12-24 05:45:36 +03:00
removed CDataBuffer reliance
This commit is contained in:
parent
6324161b98
commit
8edd843f4b
@ -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__
|
@ -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:
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user