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