#pragma once #include "Packet.h" #include #include #include #include using boost::asio::ip::tcp; class Session : public std::enable_shared_from_this { public: Session(tcp::socket socket); ~Session(); void Start(); void Send(std::span data); void SetNickname(const std::string &nickname); const std::string &GetNickname() const; void SetGold(uint64_t gold); uint64_t GetGold() const; void SetSwordLevel(uint32_t level); uint32_t GetSwordLevel() const; private: void DoReadHeader(); void DoReadBody(); void DoWrite(); tcp::socket socket_; PacketHeader packetHeader_; std::vector packetBody_; // 스레드 안전성과 순서 보장을 위한 출력 패킷 큐 std::deque> writeQueue_; std::string nickname_; uint64_t gold_ = 0; uint32_t swordLevel_ = 0; };