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

use std array in NetServer::ServerEchoRead (#2648)

parent 8b622643
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "deck_manager.h" #include "deck_manager.h"
#include "replay.h" #include "replay.h"
#include <thread> #include <thread>
#include <array>
namespace ygo { namespace ygo {
...@@ -101,18 +102,17 @@ void DuelClient::ClientRead(bufferevent* bev, void* ctx) { ...@@ -101,18 +102,17 @@ void DuelClient::ClientRead(bufferevent* bev, void* ctx) {
int len = evbuffer_get_length(input); int len = evbuffer_get_length(input);
if (len < 2) if (len < 2)
return; return;
unsigned char* duel_client_read = new unsigned char[SIZE_NETWORK_BUFFER]; std::array<unsigned char, SIZE_NETWORK_BUFFER> duel_client_read;
uint16_t packet_len = 0; uint16_t packet_len = 0;
while (len >= 2) { while (len >= 2) {
evbuffer_copyout(input, &packet_len, sizeof packet_len); evbuffer_copyout(input, &packet_len, sizeof packet_len);
if (len < packet_len + 2) if (len < packet_len + 2)
break; break;
int read_len = evbuffer_remove(input, duel_client_read, packet_len + 2); int read_len = evbuffer_remove(input, duel_client_read.data(), packet_len + 2);
if (read_len > 2) if (read_len > 2)
HandleSTOCPacketLan(&duel_client_read[2], read_len - 2); HandleSTOCPacketLan(&duel_client_read[2], read_len - 2);
len -= packet_len + 2; len -= packet_len + 2;
} }
delete[] duel_client_read;
} }
void DuelClient::ClientEvent(bufferevent* bev, short events, void* ctx) { void DuelClient::ClientEvent(bufferevent* bev, short events, void* ctx) {
if (events & BEV_EVENT_CONNECTED) { if (events & BEV_EVENT_CONNECTED) {
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include "tag_duel.h" #include "tag_duel.h"
#include "deck_manager.h" #include "deck_manager.h"
#include <thread> #include <thread>
#include <array>
namespace ygo { namespace ygo {
std::unordered_map<bufferevent*, DuelPlayer> NetServer::users; std::unordered_map<bufferevent*, DuelPlayer> NetServer::users;
...@@ -126,18 +127,17 @@ void NetServer::ServerEchoRead(bufferevent *bev, void *ctx) { ...@@ -126,18 +127,17 @@ void NetServer::ServerEchoRead(bufferevent *bev, void *ctx) {
int len = evbuffer_get_length(input); int len = evbuffer_get_length(input);
if (len < 2) if (len < 2)
return; return;
unsigned char* net_server_read = new unsigned char[SIZE_NETWORK_BUFFER]; std::array<unsigned char, SIZE_NETWORK_BUFFER> net_server_read;
uint16_t packet_len = 0; uint16_t packet_len = 0;
while (len >= 2) { while (len >= 2) {
evbuffer_copyout(input, &packet_len, sizeof packet_len); evbuffer_copyout(input, &packet_len, sizeof packet_len);
if (len < packet_len + 2) if (len < packet_len + 2)
break; break;
int read_len = evbuffer_remove(input, net_server_read, packet_len + 2); int read_len = evbuffer_remove(input, net_server_read.data(), packet_len + 2);
if (read_len > 2) if (read_len > 2)
HandleCTOSPacket(&users[bev], &net_server_read[2], read_len - 2); HandleCTOSPacket(&users[bev], &net_server_read[2], read_len - 2);
len -= packet_len + 2; len -= packet_len + 2;
} }
delete[] net_server_read;
} }
void NetServer::ServerEchoEvent(bufferevent* bev, short events, void* ctx) { void NetServer::ServerEchoEvent(bufferevent* bev, short events, void* ctx) {
if (events & (BEV_EVENT_EOF | BEV_EVENT_ERROR)) { if (events & (BEV_EVENT_EOF | BEV_EVENT_ERROR)) {
......
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