nicknamemohaji / ft_irc

42cursus irc
0 stars 0 forks source link

ft_irc 기본구조 #3

Closed nicknamemohaji closed 2 months ago

nicknamemohaji commented 2 months ago

2 의 기본구조를 구현하였습니다.

클라이언트가 접속하면 Registration 과정을 거치고, 001~005 + MOTD 메시지를 전송하는 부분까지 구현하였습니다.

--

kqueue 이벤트가 발생하면 다음 순으로 처리됩니다. (쓰기 이벤트는 버퍼에 내용이 있을 때에만 감지하도록 구현했고, IRCServer::OnWriteEvent에서는 버퍼 크기에 따라서 계속 이벤트를 감지할지 여부만 정해줍니다)

TCPMultiplexer::WaitEvent -> (kevent(2)) -> IRCServer::OnReadEvent -> IRCServer::RequestParser

이후 멤버 함수 포인터 배열인 IRCServer::Actions를 참조해 알맞은 동작을 수행합니다.

예를 들어, NICK 메시지를 파싱하면 IRCServer::Actions[3]에 해당하는 IRCServer::ActionAcceptClient를 호출하고, 이 안에서 현재 상황에 맞는 동작을(사용자 등록 or 닉네임 변경) 수행합니다.