nicknamemohaji / ft_irc

42cursus irc
0 stars 0 forks source link

NAME Commandn Flow #8

Closed alsksssass closed 1 month ago

alsksssass commented 2 months ago

IRC NAMES 명령어 코딩 시나리오

목적

IRC 프로토콜의 NAMES 명령어를 구현하여 채널에 가입된 모든 사용자를 출력합니다. 사용자의 권한(@)도 함께 표시합니다.

명령어 형식

실행 순서

  1. 명령어 파싱
  2. 채널 존재 및 이름 유효성 확인 (오류 시 RPL_ENDOFNAMES)
  3. 채널 비밀번호 모드 확인 (비밀번호 모드일 경우 RPL_ENDOFNAMES)
  4. 사용자가 채널에 가입되어 있지 않으면 해당 채널 무시
  5. 채널 사용자 목록 전송
  6. RPL_ENDOFNAMES 전송

필요한 메소드

클라이언트 채널 서버 중하나 협의해서 추가

GetChannelUsers 메소드 설명

응답 형식

구현 시 고려사항

  1. 채널 이름 유효성 검사 로직 구현
  2. 비밀번호 모드인 채널 처리 방식 결정
  3. 사용자 권한(@) 확인 및 표시 로직 구현
  4. 대규모 채널에서의 성능 최적화 (사용자 목록이 매우 긴 경우)
  5. 모든 채널 조회 시 권한 체크 (일반 사용자가 모든 채널 정보를 볼 수 있는지 결정)

에러 처리

향후 개선 사항

테스트 계획

  1. 단일 채널에 대한 NAMES 명령어 테스트
  2. 다중 채널에 대한 NAMES 명령어 테스트
  3. 존재하지 않는 채널에 대한 에러 처리 테스트
  4. 비밀번호 모드 채널에 대한 처리 테스트
  5. 대량의 사용자가 있는 채널에 대한 성능 테스트
  6. 모든 채널 조회 기능 테스트(의논)
alsksssass commented 2 months ago

server class std::string AddPrefixToChannelName(const std::string& name);추가

JOIN 외에 채널이 인자로 들어올때 #이 안붙어서옴, #이 있으면 그대로 없으면 추가해서 반환