mirror of
https://github.com/alliedmodders/amxmodx.git
synced 2024-12-25 06:15:37 +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 ###
|
### EDIT BELOW FOR OTHER PROJECTS ###
|
||||||
|
|
||||||
OPT_FLAGS = -O3 -funroll-loops -s -pipe
|
OPT_FLAGS = -O2 -funroll-loops -s -pipe
|
||||||
DEBUG_FLAGS = -g -ggdb3
|
DEBUG_FLAGS = -g -ggdb3
|
||||||
CPP = gcc
|
CPP = gcc
|
||||||
NAME = sockets_amxx
|
NAME = sockets_amxx
|
||||||
@ -45,12 +45,12 @@ $(BIN_DIR)/%.o: %.cpp
|
|||||||
all:
|
all:
|
||||||
mkdir -p $(BIN_DIR)
|
mkdir -p $(BIN_DIR)
|
||||||
mkdir -p $(BIN_DIR)/sdk
|
mkdir -p $(BIN_DIR)/sdk
|
||||||
$(MAKE) sockets
|
$(MAKE) geoip
|
||||||
|
|
||||||
amd64:
|
amd64:
|
||||||
$(MAKE) all AMD64=true
|
$(MAKE) all AMD64=true
|
||||||
|
|
||||||
sockets: $(OBJ_LINUX)
|
geoip: $(OBJ_LINUX)
|
||||||
$(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
|
$(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
|
||||||
|
|
||||||
debug:
|
debug:
|
||||||
|
@ -2026,7 +2026,7 @@ typedef void (*PFN_MERGEDEFINITION_FILE) (const char * /*filename*/);
|
|||||||
typedef const char * (*PFN_FORMAT) (const char * /*fmt*/, ... /*params*/);
|
typedef const char * (*PFN_FORMAT) (const char * /*fmt*/, ... /*params*/);
|
||||||
typedef void (*PFN_REGISTERFUNCTION) (void * /*pfn*/, const char * /*desc*/);
|
typedef void (*PFN_REGISTERFUNCTION) (void * /*pfn*/, const char * /*desc*/);
|
||||||
typedef int (*PFN_AMX_PUSH) (AMX * /*amx*/, cell /*value*/);
|
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_ADD_NATIVES g_fn_AddNatives;
|
||||||
extern PFN_BUILD_PATHNAME g_fn_BuildPathname;
|
extern PFN_BUILD_PATHNAME g_fn_BuildPathname;
|
||||||
|
@ -38,7 +38,6 @@
|
|||||||
|
|
||||||
// AMX Headers
|
// AMX Headers
|
||||||
#include "amxxmodule.h"
|
#include "amxxmodule.h"
|
||||||
#include "CDataBuffer.h"
|
|
||||||
|
|
||||||
#define SOCKET_TCP 1
|
#define SOCKET_TCP 1
|
||||||
#define SOCKET_UDP 2
|
#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);
|
return send(socket, data, len, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *g_buffer = NULL;
|
||||||
|
static size_t g_buflen = 0;
|
||||||
|
|
||||||
// native socket_send2(_socket, _data[], _length);
|
// native socket_send2(_socket, _data[], _length);
|
||||||
static cell AMX_NATIVE_CALL socket_send2(AMX *amx, cell *params) /* 3 param */
|
static cell AMX_NATIVE_CALL socket_send2(AMX *amx, cell *params) /* 3 param */
|
||||||
{
|
{
|
||||||
// We get the string from amx
|
// We get the string from amx
|
||||||
int len = params[3];
|
int len = params[3];
|
||||||
int socket = params[1];
|
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]);
|
cell *pData = MF_GetAmxAddr(amx, params[2]);
|
||||||
char *pBuffer = buffer;
|
char *pBuffer = g_buffer;
|
||||||
|
|
||||||
while (len--)
|
while (len--)
|
||||||
*pBuffer++ = *pData++;
|
*pBuffer++ = *pData++;
|
||||||
|
|
||||||
// And send it to the socket
|
// 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[] = {
|
AMX_NATIVE_INFO sockets_natives[] = {
|
||||||
@ -235,5 +241,6 @@ void OnAmxxDetach()
|
|||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
WSACleanup();
|
WSACleanup();
|
||||||
#endif
|
#endif
|
||||||
|
delete [] g_buffer;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user