#pragma once

#include <Core/Networking/Socket.h>

namespace Juliet
{
    class NetworkPacket;

    class TcpSocket : public Socket
    {
      public:
        TcpSocket();

        TcpSocket(const TcpSocket&) = delete;
        TcpSocket& operator=(const TcpSocket&) = delete;

        RequestStatus Send(NetworkPacket& packet);
        RequestStatus Send(ByteBuffer buffer);
        Status        Receive(NetworkPacket& outPacket);

      private:
        friend class TcpListener;
    };
} // namespace Juliet
