Commit ced64065 authored by Chen Bill's avatar Chen Bill Committed by GitHub

use uint16_t in NetServer, DuelClient (#2633)

parent 480e2f1a
......@@ -52,31 +52,28 @@ public:
static void SendResponse();
static void SendPacketToServer(unsigned char proto) {
auto p = duel_client_write;
BufferIO::WriteInt16(p, 1);
BufferIO::WriteInt8(p, proto);
buffer_write<uint16_t>(p, 1);
buffer_write<uint8_t>(p, proto);
bufferevent_write(client_bev, duel_client_write, 3);
}
template<typename ST>
static void SendPacketToServer(unsigned char proto, ST& st) {
auto p = duel_client_write;
if ((int)sizeof(ST) > MAX_DATA_SIZE)
if (sizeof(ST) > MAX_DATA_SIZE)
return;
BufferIO::WriteInt16(p, (short)(1 + sizeof(ST)));
BufferIO::WriteInt8(p, proto);
buffer_write<uint16_t>(p, (uint16_t)(1 + sizeof(ST)));
buffer_write<uint8_t>(p, proto);
std::memcpy(p, &st, sizeof(ST));
bufferevent_write(client_bev, duel_client_write, sizeof(ST) + 3);
}
static void SendBufferToServer(unsigned char proto, void* buffer, size_t len) {
auto p = duel_client_write;
int blen = len;
if (blen < 0)
return;
if (blen > MAX_DATA_SIZE)
blen = MAX_DATA_SIZE;
BufferIO::WriteInt16(p, (short)(1 + blen));
BufferIO::WriteInt8(p, proto);
std::memcpy(p, buffer, blen);
bufferevent_write(client_bev, duel_client_write, blen + 3);
if (len > MAX_DATA_SIZE)
len = MAX_DATA_SIZE;
buffer_write<uint16_t>(p, (uint16_t)(1 + len));
buffer_write<uint8_t>(p, proto);
std::memcpy(p, buffer, len);
bufferevent_write(client_bev, duel_client_write, len + 3);
}
static std::vector<HostPacket> hosts;
......
......@@ -11,7 +11,7 @@ event* NetServer::broadcast_ev = 0;
evconnlistener* NetServer::listener = 0;
DuelMode* NetServer::duel_mode = 0;
unsigned char NetServer::net_server_write[SIZE_NETWORK_BUFFER];
unsigned short NetServer::last_sent = 0;
size_t NetServer::last_sent = 0;
bool NetServer::StartServer(unsigned short port) {
if(net_evbase)
......
......@@ -19,7 +19,7 @@ private:
static evconnlistener* listener;
static DuelMode* duel_mode;
static unsigned char net_server_write[SIZE_NETWORK_BUFFER];
static unsigned short last_sent;
static size_t last_sent;
public:
static bool StartServer(unsigned short port);
......@@ -38,20 +38,19 @@ public:
static size_t CreateChatPacket(unsigned char* src, int src_size, unsigned char* dst, uint16_t dst_player_type);
static void SendPacketToPlayer(DuelPlayer* dp, unsigned char proto) {
auto p = net_server_write;
BufferIO::WriteInt16(p, 1);
BufferIO::WriteInt8(p, proto);
buffer_write<uint16_t>(p, 1);
buffer_write<uint8_t>(p, proto);
last_sent = 3;
if(!dp)
return;
bufferevent_write(dp->bev, net_server_write, 3);
if (dp)
bufferevent_write(dp->bev, net_server_write, 3);
}
template<typename ST>
static void SendPacketToPlayer(DuelPlayer* dp, unsigned char proto, ST& st) {
auto p = net_server_write;
if ((int)sizeof(ST) > MAX_DATA_SIZE)
if (sizeof(ST) > MAX_DATA_SIZE)
return;
BufferIO::WriteInt16(p, (short)(1 + sizeof(ST)));
BufferIO::WriteInt8(p, proto);
buffer_write<uint16_t>(p, (uint16_t)(1 + sizeof(ST)));
buffer_write<uint8_t>(p, proto);
std::memcpy(p, &st, sizeof(ST));
last_sent = sizeof(ST) + 3;
if (dp)
......@@ -59,17 +58,14 @@ public:
}
static void SendBufferToPlayer(DuelPlayer* dp, unsigned char proto, void* buffer, size_t len) {
auto p = net_server_write;
int blen = len;
if (blen < 0)
return;
if (blen > MAX_DATA_SIZE)
blen = MAX_DATA_SIZE;
BufferIO::WriteInt16(p, (short)(1 + blen));
BufferIO::WriteInt8(p, proto);
std::memcpy(p, buffer, blen);
last_sent = blen + 3;
if (len > MAX_DATA_SIZE)
len = MAX_DATA_SIZE;
buffer_write<uint16_t>(p, (uint16_t)(1 + len));
buffer_write<uint8_t>(p, proto);
std::memcpy(p, buffer, len);
last_sent = len + 3;
if (dp)
bufferevent_write(dp->bev, net_server_write, blen + 3);
bufferevent_write(dp->bev, net_server_write, len + 3);
}
static void ReSendToPlayer(DuelPlayer* dp) {
if(dp)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment