Closed alsksssass closed 1 month ago
topic 수정한 유저 표시 추가 클래스 변수 std::String edituser 와 set, get 메소드 추가. 모든 토픽을 하나의 배열로 만들어서 접근하도록 하는방안 의논
채널 생성및 토픽수정시간은 유닉스 타임스탬프 시간으로 변경
모드는 +nt 형식으로 반환되는 메소드도 있었으면 좋겠음. 접속시 채널의 모드상태를 전송해야하고 모드 변경시에도 필요할듯
퍼블릭, 시크릿, 프라이빗 채널 세종류가 있는데 퍼블릭 하나만 하는것이 어떨까 싶네요 다른 건 우리가 구현하지 않는 기능들을 위한 옵션인듯 합니다 시크릿 채널 채널의 존재 자체가 숨겨집니다. 채널 목록에 표시되지 않습니다. WHOIS 명령어로 볼 수 없습니다. 채널에 참여한 사용자만 채널의 존재를 알 수 있습니다.
프라이빗 채널 채널의 존재는 볼 수 있지만, 내용은 숨겨집니다. 채널 목록에는 표시되지만, 주제나 참여자 목록은 숨겨집니다.
채널에서 유저 제거 추가.
클라이언트 클래스에서 채널제거 메소드 추가
halfop, op, normal user로 구분하지 않고 op, normal user로만 구분한다면 단순 bool값으로 처리가 가능할 것 같습니다
halfop, op, normal user로 구분하지 않고 op, normal user로만 구분한다면 단순 bool값으로 처리가 가능할 것 같습니다
현재 권한 문제에대해서 채널 생성 운영자와 +o 옵션 운영자간의 권한 차이가 존재해 따로 분리해야할 상황이 있을수 있어 아직 소민씨에 의해 결정된후에 수정할 예정입니다. 채널 생성운영자 admin 권한부여 운영자 oper 예) admin -o admin 무시 oper -o oper 실행 oper -o admin 무시 admin -o oper 실행
IRC 채널 클래스 설계
기본 속성
unsigned int channel_mode_
: 채널의 모드 (비트마스크로 체크 및 확인)unsigned int channel_limit_
: 채널의 최대 접속자 수std::string channel_name_
: 채널의 이름std::string channel_topic_
: 채널 토픽std::string channel_topic_edit_date_
: 채널 토픽 수정 시간std::string channel_password_
: 채널 비밀번호std::string start_date_
: 채널 생성 날짜std::vector<std::string> invited_users_
: 초대된 유저 리스트std::map<std::string, ChannelPermission> users_in_channel_
: 채널 유저 리스트 (이름, 권한)열거형 (Enums)
상수
생성자
IRCChannel(클라이언트 이름, 채널 이름)
IRCChannel(클라이언트 이름, 채널 이름, 비밀번호)
메서드
모드
bool CheckChannelMode(ChannelModeSet) const
사용자 권한 관리
bool IsUserAuthorized(클라이언트 닉네임, ChannelPermission)
void SetUserAuthorization(클라이언트 닉네임, ChannelPermission)
채널 설정
void SetTopic(클라이언트 닉네임, string 토픽)
사용자 관리
void AddInvitedUser(클라이언트 닉네임, 타겟 클라이언트 닉네임)
bool IsInChannel(클라이언트 닉네임) const
bool IsInvited(클라이언트 닉네임) const
bool MatchPassword(const std::string& password)
`void AddChannelUser(클라이언트 닉네임)
void ManageChannelPermission(클라이언트 닉네임, 타겟 닉네임, ChannelPermission)
정보 조회
std::string GetChannelStartTime() const
std::string GetTopic() const
std::string GetTopicEditDate() const
std::string GetPassword() const
std::vector<std::string> GetMemberNames() const
각 메서드는 필요에 따라 적절한 예외 처리를 포함하며, 채널의 상태를 일관성 있게 유지합니다. 추가할 만한것이나 수정할것 있으면 코멘트 바랍니다