GameRC (IRC Server)
1.0.0
C++98 기반 IRC 서버 프로젝트
|
IRC 로직을 수행하는 정적 클래스. 더 자세히 ...
#include <IRC.hpp>
정적 Public 멤버 함수 | |
static void | HandleMessage (const int32 IN socket, Network &IN network, const std::string &IN password) |
유저로부터 들어온 메시지를 처리하는 함수. | |
Private 타입 | |
typedef void(* | TcommandFunctionPTR) (const int32, const std::string &, const std::vector< std::string > &, const std::string &, const std::string &, Network &) |
command 함수 포인터를 정의. | |
Private 멤버 함수 | |
IRC () | |
IRC 객체의 기본 생성자. | |
정적 Private 멤버 함수 | |
static void | initializeCommandFunctionMap () |
정적 멤버 변수 sStaticCommandFunctionMap를 초기화하는 함수. | |
static void | parseMessage (const std::string &IN message, std::string &OUT command, std::vector< std::string > &OUT parameters, std::string &OUT trailing) |
CRLF로 끝나는 메시지를 파싱하는 함수. | |
static void | PASS (const int32 IN socket, const std::string &IN command, const std::vector< std::string > &IN parameters, const std::string &IN trailing, const std::string &IN password, Network &IN OUT network) |
PASS 메시지를 처리하는 함수. | |
static void | NICK (const int32 IN socket, const std::string &IN command, const std::vector< std::string > &IN parameters, const std::string &IN trailing, const std::string &IN password, Network &IN OUT network) |
NICK 메시지를 처리하는 함수. | |
static void | USER (const int32 IN socket, const std::string &IN command, const std::vector< std::string > &IN parameters, const std::string &IN trailing, const std::string &IN password, Network &IN OUT network) |
USER 메시지를 처리하는 함수. | |
static void | QUIT (const int32 IN socket, const std::string &IN command, const std::vector< std::string > &IN parameters, const std::string &IN trailing, const std::string &IN password, Network &IN OUT network) |
QUIT 메시지를 처리하는 함수. | |
static void | JOIN (const int32 IN socket, const std::string &IN command, const std::vector< std::string > &IN parameters, const std::string &IN trailing, const std::string &IN password, Network &IN OUT network) |
JOIN 메시지를 처리하는 함수. | |
static void | PART (const int32 IN socket, const std::string &IN command, const std::vector< std::string > &IN parameters, const std::string &IN trailing, const std::string &IN password, Network &IN OUT network) |
PART 메시지를 처리하는 함수. | |
static void | MODE (const int32 IN socket, const std::string &IN command, const std::vector< std::string > &IN parameters, const std::string &IN trailing, const std::string &IN password, Network &IN OUT network) |
MODE 메시지를 처리하는 함수. | |
static void | TOPIC (const int32 IN socket, const std::string &IN command, const std::vector< std::string > &IN parameters, const std::string &IN trailing, const std::string &IN password, Network &IN OUT network) |
TOPIC 메시지를 처리하는 함수. | |
static void | INVITE (const int32 IN socket, const std::string &IN command, const std::vector< std::string > &IN parameters, const std::string &IN trailing, const std::string &IN password, Network &IN OUT network) |
INVITE 메시지를 처리하는 함수. | |
static void | KICK (const int32 IN socket, const std::string &IN command, const std::vector< std::string > &IN parameters, const std::string &IN trailing, const std::string &IN password, Network &IN OUT network) |
KICK 메시지를 처리하는 함수. | |
static void | PRIVMSG (const int32 IN socket, const std::string &IN command, const std::vector< std::string > &IN parameters, const std::string &IN trailing, const std::string &IN password, Network &IN OUT network) |
PRIVMSG 메시지를 처리하는 함수. | |
static void | PING (const int32 IN socket, const std::string &IN command, const std::vector< std::string > &IN parameters, const std::string &IN trailing, const std::string &IN password, Network &IN OUT network) |
PING 메시지를 처리하는 함수. | |
static void | PONG (const int32 IN socket, const std::string &IN command, const std::vector< std::string > &IN parameters, const std::string &IN trailing, const std::string &IN password, Network &IN OUT network) |
PONG 메시지를 처리하는 함수. | |
static void | sendWelcomeMessage (const int32 IN socket, Network &IN OUT network) |
웰컴 메시지를 전송하는 함수. | |
static bool | isNicknameInUse (const std::string &IN nickname) |
nickname 중복을 확인하는 함수. | |
정적 Private 속성 | |
static std::map< std::string, TcommandFunctionPTR > | sStaticCommandFunctionMap |
IRC command에 따라 호출해야 하는 함수를 가지고 있는 정적 멤버 변수. | |
IRC 로직을 수행하는 정적 클래스.
|
private |
command 함수 포인터를 정의.
|
private |
IRC 객체의 기본 생성자.
(사용되지 않음)
|
static |
유저로부터 들어온 메시지를 처리하는 함수.
네트워크를 통해 수신된 메시지가 있는 경우, Core::Run()에서 호출된다.
CRLF로 끝나는 메시지를 하나씩 가져와서 command, parameters, trailing 으로 파싱한다.
command에 알맞는 함수를 호출한다.
socket | 메시지를 보낸 유저의 소켓. |
network | 메시지 처리에 사용될 네트워크 객체. |
password | 유저 연결 등록에 필요한 비밀번호. |
|
staticprivate |
정적 멤버 변수 sStaticCommandFunctionMap를 초기화하는 함수.
|
staticprivate |
CRLF로 끝나는 메시지를 파싱하는 함수.
메시지 파싱 후 매개 변수로 받은 command, parameters, trailing에 올바른 값들을 넣어준다.
[Input message format]
<command> <parameters> <trailing>
<trailing> = ':'로 시작하는 맨 마지막 문자열.
message | 원본 메시지. |
command | command가 저장되는 std::string. |
parameters | parameter들이 저장되는 std::vector<std::string>. |
trailing | trailing이 저장되는 std::string. |
|
staticprivate |
PASS 메시지를 처리하는 함수.
유저를 인증한다.
[Error Replies]
socket | 메시지를 보낸 유저의 소켓. |
command | command. |
parameters | parameters. |
trailing | trailing. |
password | 유저 연결 등록에 필요한 비밀번호. |
network | 메시지 처리에 사용될 네트워크 객체. |
|
staticprivate |
NICK 메시지를 처리하는 함수.
유저의 nickname을 설정한다.
nickname이 올바르게 설정된 경우, 해당 유저가 속한 모든 채널에 알린다.
[Error Replies]
socket | 메시지를 보낸 유저의 소켓. |
command | command. |
parameters | parameters. |
trailing | trailing. |
password | 사용되지 않음. |
network | 메시지 처리에 사용될 네트워크 객체. |
|
staticprivate |
USER 메시지를 처리하는 함수.
유저의 username, hostname, servername, realname을 설정한다.
유저 설정을 마친 후, 유저가 연결되었는지 확인을 위해 PING 메시지를 전송한다.
유저가 PING 메시지에 대한 PONG 메시지를 응답한 경우, 해당 유저의 연결을 등록한다.
[Error Replies]
socket | 메시지를 보낸 유저의 소켓. |
command | command. |
parameters | parameters. |
trailing | trailing. |
password | 사용되지 않음. |
network | 메시지 처리에 사용될 네트워크 객체. |
|
staticprivate |
QUIT 메시지를 처리하는 함수.
유저를 종료시킨다.
유저가 특정 채널에 존재하는 경우, 해당 채널에 유저가 종료되었음을 알린다.
socket | 메시지를 보낸 유저의 소켓. |
command | command. |
parameters | parameters. |
trailing | trailing. |
password | 사용되지 않음. |
network | 메시지 처리에 사용될 네트워크 객체. |
|
staticprivate |
JOIN 메시지를 처리하는 함수.
유저를 특정 채널에 입장시킨다.
유저가 새로운 채널에 입장하는 경우, 채널의 operator로 설정된다.
유저가 기존 채널에 입장하는 경우, 채널의 일반 유저로 설정된다.
채널의 모든 유저에게 새로운 유저의 입장을 알린다.
[Error Replies]
socket | 메시지를 보낸 유저의 소켓. |
command | command. |
parameters | parameters. |
trailing | trailing. |
password | 사용되지 않음. |
network | 메시지 처리에 사용될 네트워크 객체. |
|
staticprivate |
PART 메시지를 처리하는 함수.
유저를 채널에서 퇴장시킨다.
채널의 모든 유저에게 유저의 퇴장을 알린다.
[Error Replies]
socket | 메시지를 보낸 유저의 소켓. |
command | command. |
parameters | parameters. |
trailing | trailing. |
password | 사용되지 않음. |
network | 메시지 처리에 사용될 네트워크 객체. |
|
staticprivate |
MODE 메시지를 처리하는 함수.
채널에 대한 옵션을 설정한다.
옵션 설정 후, 채널의 모든 유저에게 알린다.
[Options]
[Error Replies]
socket | 메시지를 보낸 유저의 소켓. |
command | command. |
parameters | parameters. |
trailing | trailing. |
password | 사용되지 않음. |
network | 메시지 처리에 사용될 네트워크 객체. |
|
staticprivate |
TOPIC 메시지를 처리하는 함수.
채널의 topic을 설정하거나 삭제한다.
trailing이 없는 경우, 채널의 topic을 알려준다.
topic 설정 및 삭제 후, 채널의 모든 유저에게 알린다.
[Error Replies]
socket | 메시지를 보낸 유저의 소켓. |
command | command. |
parameters | parameters. |
trailing | trailing. |
password | 사용되지 않음. |
network | 메시지 처리에 사용될 네트워크 객체. |
|
staticprivate |
INVITE 메시지를 처리하는 함수.
특정 유저를 채널에 초대한다.
[Error Replies]
socket | 메시지를 보낸 유저의 소켓. |
command | command. |
parameters | parameters. |
trailing | trailing. |
password | 사용되지 않음. |
network | 메시지 처리에 사용될 네트워크 객체. |
|
staticprivate |
KICK 메시지를 처리하는 함수.
특정 유저를 채널에서 강제로 추방시킨다.
유저 추방 후, 채널의 모든 유저에게 알린다.
[Error Replies]
socket | 메시지를 보낸 유저의 소켓. |
command | command. |
parameters | parameters. |
trailing | trailing. |
password | 사용되지 않음. |
network | 메시지 처리에 사용될 네트워크 객체. |
|
staticprivate |
PRIVMSG 메시지를 처리하는 함수.
유저 또는 채널에 메시지를 전송한다.
[Error Replies]
socket | 메시지를 보낸 유저의 소켓. |
command | command. |
parameters | parameters. |
trailing | trailing. |
password | 사용되지 않음. |
network | 메시지 처리에 사용될 네트워크 객체. |
|
staticprivate |
PING 메시지를 처리하는 함수.
PING 메시지를 보낸 유저에게 PONG 메시지를 전송한다.
socket | 메시지를 보낸 유저의 소켓. |
command | command. |
parameters | parameters. |
trailing | trailing. |
password | 사용되지 않음. |
network | 메시지 처리에 사용될 네트워크 객체. |
|
staticprivate |
PONG 메시지를 처리하는 함수.
유저가 PONG 메시지를 보낸 경우, 해당 유저를 등록시킨다.
socket | 메시지를 보낸 유저의 소켓. |
command | command. |
parameters | parameters. |
trailing | trailing. |
password | 사용되지 않음. |
network | 메시지 처리에 사용될 네트워크 객체. |
|
staticprivate |
웰컴 메시지를 전송하는 함수.
유저가 등록되면, 웰컴 메시지를 전송한다.
socket | 메시지를 보낸 유저의 소켓. |
network | 메시지 처리에 사용될 네트워크 객체. |
|
staticprivate |
nickname 중복을 확인하는 함수.
nickname | 찾을 nickname. |
|
staticprivate |