FeatherMC/src/network/TCPClient.h

36 lines
758 B
C++

#pragma once
#include "Lockable.h"
#include "TCPCommon.h"
#include "SocketAddress.h"
#include <cstdint>
#include <vector>
namespace Feather::Network
{
class TCPClient
{
public:
TCPClient(TCPListener* parent, SocketHandle socket, SocketAddress&& addr);
~TCPClient();
void ReadCallback();
void WriteCallback();
void EventCallback(int16_t event);
void Write(const uint8_t* data, size_t size);
LockableVector<uint8_t>& GetData() { return m_data; }
const SocketAddress& GetAddress() const { return m_address; }
private:
TCPListener* m_parent;
bufferevent* m_bufferEvent;
LockableVector<uint8_t> m_data;
SocketAddress m_address;
};
}