프로그래밍 언어/Flatbuffers
[Network] 6. FlatBuffers + Boost Asio 콘솔 서버 예제 (2)
copynull
2021. 7. 5. 18:25

CChatRoom 클래스
채팅방 클래스는 생각보다 단순하여 인라인으로 구성합니다. 방에 들어온 유저 세션을 set 컨테이너에서 관리하며 접속된 유저들에게 데이터를 보낼 수 있는 write 함수로 간단히 구성됩니다.
CChatRoom.h
#pragma once
#include <set>
#include "Session.h"
class CChatRoom
{
private:
enum { max_recent_msgs = 10 };
public:
CChatRoom() {}
~CChatRoom() { m_SessionSet.clear(); }
public:
void Enter(std::shared_ptr<CSession> session)
{
m_SessionSet.insert(session);
}
void Leave(std::shared_ptr<CSession> session)
{
m_SessionSet.erase(session);
}
void Write(const CMessage& msg)
{
for (auto session : m_SessionSet)
session->Write(msg);
}
private:
std::set<std::shared_ptr<CSession>> m_SessionSet;
};