Use input buffer directly

This commit is contained in:
Joshua Ashton 2020-08-01 05:17:27 +01:00
parent cc03c321f3
commit 9ec90e9083
3 changed files with 3 additions and 12 deletions

View File

@ -25,7 +25,6 @@ namespace Feather::Network
TCPListener* m_parent;
bufferevent* m_bufferEvent;
evbuffer* m_buffer;
LockableVector<uint8_t> m_data;
};

View File

@ -4,7 +4,6 @@
#include <memory>
struct bufferevent;
struct evbuffer;
namespace Feather::Network
{

View File

@ -111,7 +111,6 @@ namespace Feather::Network
TCPClient::TCPClient(TCPListener* parent, SocketHandle socket)
: m_parent(parent)
, m_bufferEvent(bufferevent_socket_new(NetworkManager::Instance().GetEventBase(), socket, BEV_OPT_CLOSE_ON_FREE | BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS))
, m_buffer(evbuffer_new())
{
printf("Created TCPListenerClient\n");
bufferevent_setcb(m_bufferEvent,
@ -124,22 +123,16 @@ namespace Feather::Network
TCPClient::~TCPClient()
{
evbuffer_free(m_buffer);
bufferevent_free(m_bufferEvent);
}
void TCPClient::ReadCallback()
{
if (bufferevent_read_buffer(m_bufferEvent, m_buffer) != 0)
{
printf("fuck");
return;
}
const size_t size = evbuffer_get_length(m_buffer);
evbuffer* buffer = bufferevent_get_input(m_bufferEvent);
const size_t size = evbuffer_get_length(buffer);
auto [data, lock] = m_data.borrow();
data.resize(size);
if (evbuffer_remove(m_buffer, data.data(), size) != size)
if (evbuffer_remove(buffer, data.data(), size) != size)
{
printf("fuck");
return;