Thinking Different




 

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;
};