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; TCPListener* m_parent;
bufferevent* m_bufferEvent; bufferevent* m_bufferEvent;
evbuffer* m_buffer;
LockableVector<uint8_t> m_data; LockableVector<uint8_t> m_data;
}; };

View File

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

View File

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