FeatherMC/src/network/TCPListener.h

41 lines
795 B
C++

#pragma once
#include "Lockable.h"
#include <cstdint>
#include <memory>
#include <vector>
namespace Feather::Network
{
class TCPSocket;
class TCPListenerClient;
class IListenerInterface;
class TCPClient
{
public:
TCPClient(std::unique_ptr<TCPListenerClient>&& client);
TCPClient(TCPClient&& client);
~TCPClient();
LockableVector<uint8_t>& GetData();
void Write(const uint8_t* data, size_t size);
private:
std::unique_ptr<TCPListenerClient> m_client;
};
class TCPListener
{
public:
TCPListener(uint16_t port, IListenerInterface* callbacks);
~TCPListener();
private:
IListenerInterface* m_callbacks;
std::unique_ptr<TCPSocket> m_socket;
};
}