GameRC (IRC Server)  1.0.0
C++98 기반 IRC 서버 프로젝트
로딩중...
검색중...
일치하는것 없음
grc::IRC 클래스 참조

IRC 로직을 수행하는 정적 클래스. 더 자세히 ...

#include <IRC.hpp>

grc::IRC에 대한 협력 다이어그램:
[범례]

정적 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, TcommandFunctionPTRsStaticCommandFunctionMap
 IRC command에 따라 호출해야 하는 함수를 가지고 있는 정적 멤버 변수.
 

상세한 설명

IRC 로직을 수행하는 정적 클래스.

멤버 타입정의 문서화

◆ TcommandFunctionPTR

typedef void(* grc::IRC::TcommandFunctionPTR) (const int32, const std::string &, const std::vector< std::string > &, const std::string &, const std::string &, Network &)
private

command 함수 포인터를 정의.

생성자 & 소멸자 문서화

◆ IRC()

grc::IRC::IRC ( )
private

IRC 객체의 기본 생성자.

(사용되지 않음)

멤버 함수 문서화

◆ HandleMessage()

void grc::IRC::HandleMessage ( const int32 IN socket,
Network &IN network,
const std::string &IN password )
static

유저로부터 들어온 메시지를 처리하는 함수.

네트워크를 통해 수신된 메시지가 있는 경우, Core::Run()에서 호출된다.
CRLF로 끝나는 메시지를 하나씩 가져와서 command, parameters, trailing 으로 파싱한다.
command에 알맞는 함수를 호출한다.

매개변수
socket메시지를 보낸 유저의 소켓.
network메시지 처리에 사용될 네트워크 객체.
password유저 연결 등록에 필요한 비밀번호.

◆ initializeCommandFunctionMap()

void grc::IRC::initializeCommandFunctionMap ( )
staticprivate

정적 멤버 변수 sStaticCommandFunctionMap를 초기화하는 함수.

◆ parseMessage()

void grc::IRC::parseMessage ( const std::string &IN message,
std::string &OUT command,
std::vector< std::string > &OUT parameters,
std::string &OUT trailing )
staticprivate

CRLF로 끝나는 메시지를 파싱하는 함수.

메시지 파싱 후 매개 변수로 받은 command, parameters, trailing에 올바른 값들을 넣어준다.

[Input message format]
<command> <parameters> <trailing>
<trailing> = ':'로 시작하는 맨 마지막 문자열.

매개변수
message원본 메시지.
commandcommand가 저장되는 std::string.
parametersparameter들이 저장되는 std::vector<std::string>.
trailingtrailing이 저장되는 std::string.

◆ PASS()

void grc::IRC::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 )
staticprivate

PASS 메시지를 처리하는 함수.

유저를 인증한다.

[Error Replies]

  • ERR_NEEDMOREPARAMS : parameter가 부족한 경우.
  • ERR_PASSWDMISMATCH : password가 다른 경우.
  • ERR_ALREADYREGISTERED : 유저가 이미 등록되어 있는 경우.
    매개변수
    socket메시지를 보낸 유저의 소켓.
    commandcommand.
    parametersparameters.
    trailingtrailing.
    password유저 연결 등록에 필요한 비밀번호.
    network메시지 처리에 사용될 네트워크 객체.

◆ NICK()

void grc::IRC::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 )
staticprivate

NICK 메시지를 처리하는 함수.

유저의 nickname을 설정한다.

nickname이 올바르게 설정된 경우, 해당 유저가 속한 모든 채널에 알린다.

[Error Replies]

  • ERR_NONICKNAMEGIVEN : 메시지에 nickname이 없는 경우.
  • ERR_ERRONEUSNICKNAME : 사용할 수 없는 문자가 nickname에 포함되어 있는 경우.
  • ERR_NICKNAMEINUSE : 이미 해당 nickname을 사용하는 유저가 있는 경우.
    매개변수
    socket메시지를 보낸 유저의 소켓.
    commandcommand.
    parametersparameters.
    trailingtrailing.
    password사용되지 않음.
    network메시지 처리에 사용될 네트워크 객체.

◆ USER()

void grc::IRC::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 )
staticprivate

USER 메시지를 처리하는 함수.

유저의 username, hostname, servername, realname을 설정한다.

유저 설정을 마친 후, 유저가 연결되었는지 확인을 위해 PING 메시지를 전송한다.
유저가 PING 메시지에 대한 PONG 메시지를 응답한 경우, 해당 유저의 연결을 등록한다.

[Error Replies]

  • ERR_NEEDMOREPARAMS : parameter가 부족한 경우.
  • ERR_ALREADYREGISTERED : 이미 유저가 등록된 경우.
    매개변수
    socket메시지를 보낸 유저의 소켓.
    commandcommand.
    parametersparameters.
    trailingtrailing.
    password사용되지 않음.
    network메시지 처리에 사용될 네트워크 객체.

◆ QUIT()

void grc::IRC::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 )
staticprivate

QUIT 메시지를 처리하는 함수.

유저를 종료시킨다.

유저가 특정 채널에 존재하는 경우, 해당 채널에 유저가 종료되었음을 알린다.

매개변수
socket메시지를 보낸 유저의 소켓.
commandcommand.
parametersparameters.
trailingtrailing.
password사용되지 않음.
network메시지 처리에 사용될 네트워크 객체.

◆ JOIN()

void grc::IRC::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 )
staticprivate

JOIN 메시지를 처리하는 함수.

유저를 특정 채널에 입장시킨다.

유저가 새로운 채널에 입장하는 경우, 채널의 operator로 설정된다.
유저가 기존 채널에 입장하는 경우, 채널의 일반 유저로 설정된다.
채널의 모든 유저에게 새로운 유저의 입장을 알린다.

[Error Replies]

  • ERR_NEEDMOREPARAMS : parameter가 부족한 경우.
  • ERR_INVITEONLYCHAN : 채널이 초대 전용으로 설정되어 있으나, 초대 받지 않은 상태인 경우.
  • ERR_BADCHANNELKEY : 채널에 key가 설정되어 있으나, 올바르지 않은 key로 입장한 경우.
  • ERR_CHANNELISULL : 채널이 꽉 찬 경우.
매개변수
socket메시지를 보낸 유저의 소켓.
commandcommand.
parametersparameters.
trailingtrailing.
password사용되지 않음.
network메시지 처리에 사용될 네트워크 객체.

◆ PART()

void grc::IRC::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 )
staticprivate

PART 메시지를 처리하는 함수.

유저를 채널에서 퇴장시킨다.

채널의 모든 유저에게 유저의 퇴장을 알린다.

[Error Replies]

  • ERR_NEEDMOREPARAMS : parameter가 부족한 경우.
  • ERR_NOSUCHCHANNEL : 없는 채널인 경우.
  • ERR_NOTONCHANNEL : 유저가 채널에 없는 경우.
    매개변수
    socket메시지를 보낸 유저의 소켓.
    commandcommand.
    parametersparameters.
    trailingtrailing.
    password사용되지 않음.
    network메시지 처리에 사용될 네트워크 객체.

◆ MODE()

void grc::IRC::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 )
staticprivate

MODE 메시지를 처리하는 함수.

채널에 대한 옵션을 설정한다.

옵션 설정 후, 채널의 모든 유저에게 알린다.

[Options]

  • o : 특정 유저에게 채널의 operator 권한을 부여하거나 해제한다.
  • t : 채널의 topic 변경을 operator만 가능하도록 설정하거나 해제한다.
  • i : 채널을 초대 전용으로 설정하거나 해제한다.
  • l : 채널의 최대 유저 수를 설정하거나 해제한다.
  • k : 채널 입장에 필요한 key(password)를 설정하거나 해제한다.

[Error Replies]

  • ERR_NEEDMOREPARAMS : parameter가 부족한 경우.
  • ERR_NOSUCHCHANNEL : 없는 채널인 경우.
  • ERR_CHANOPRIVSNEEDED : 메시지를 보낸 유저가 operator가 아닌 경우.
    매개변수
    socket메시지를 보낸 유저의 소켓.
    commandcommand.
    parametersparameters.
    trailingtrailing.
    password사용되지 않음.
    network메시지 처리에 사용될 네트워크 객체.

◆ TOPIC()

void grc::IRC::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 )
staticprivate

TOPIC 메시지를 처리하는 함수.

채널의 topic을 설정하거나 삭제한다.
trailing이 없는 경우, 채널의 topic을 알려준다.

topic 설정 및 삭제 후, 채널의 모든 유저에게 알린다.

[Error Replies]

  • ERR_NEEDMOREPARAMS : parameter가 부족한 경우.
  • ERR_NOSUCHCHANNEL : 없는 채널인 경우.
  • ERR_NOTONCHANNEL : 유저가 채널에 없는 경우.
  • ERR_CHANOPRIVSNEEDED : 메시지를 보낸 유저가 operator가 아닌 경우.
매개변수
socket메시지를 보낸 유저의 소켓.
commandcommand.
parametersparameters.
trailingtrailing.
password사용되지 않음.
network메시지 처리에 사용될 네트워크 객체.

◆ INVITE()

void grc::IRC::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 )
staticprivate

INVITE 메시지를 처리하는 함수.

특정 유저를 채널에 초대한다.
[Error Replies]

  • ERR_NEEDMOREPARAMS : parameter가 부족한 경우.
  • ERR_NOSUCHCHANNEL : 없는 채널인 경우.
  • ERR_NOTONCHANNEL : 유저가 채널에 없는 경우.
  • ERR_CHANOPRIVSNEEDED : 메시지를 보낸 유저가 operator가 아닌 경우.
  • ERR_USERONCHANNEL : 유저가 이미 채널에 존재하는 경우.
매개변수
socket메시지를 보낸 유저의 소켓.
commandcommand.
parametersparameters.
trailingtrailing.
password사용되지 않음.
network메시지 처리에 사용될 네트워크 객체.

◆ KICK()

void grc::IRC::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 )
staticprivate

KICK 메시지를 처리하는 함수.

특정 유저를 채널에서 강제로 추방시킨다.

유저 추방 후, 채널의 모든 유저에게 알린다.

[Error Replies]

  • ERR_NEEDMOREPARAMS : parameter가 부족한 경우.
  • ERR_NOSUCHCHANNEL : 없는 채널인 경우.
  • ERR_NOTONCHANNEL : 유저가 채널에 없는 경우.
  • ERR_CHANOPRIVSNEEDED : 메시지를 보낸 유저가 operator가 아닌 경우.
  • ERR_USERNOTINCHANNEL : 추방시킬 유저가 채널에 존재하지 않는 경우.
매개변수
socket메시지를 보낸 유저의 소켓.
commandcommand.
parametersparameters.
trailingtrailing.
password사용되지 않음.
network메시지 처리에 사용될 네트워크 객체.

◆ PRIVMSG()

void grc::IRC::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 )
staticprivate

PRIVMSG 메시지를 처리하는 함수.

유저 또는 채널에 메시지를 전송한다.

[Error Replies]

  • ERR_NORECIPIENT : 메시지를 전달할 목적지가 포함되어 있지 않은 경우.
  • ERR_NOTEXTTOSEND : 전달할 메시지가 포함되어 있지 않은 경우.
  • ERR_CANNOTSENDTOCHAN : 메시지를 보내는 유저가 해당 채널에 없는 경우.
  • ERR_NOSUCHNICK : 메시지를 전송할 유저나 채널 이름이 존재하지 않는 경우.
    매개변수
    socket메시지를 보낸 유저의 소켓.
    commandcommand.
    parametersparameters.
    trailingtrailing.
    password사용되지 않음.
    network메시지 처리에 사용될 네트워크 객체.

◆ PING()

void grc::IRC::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 )
staticprivate

PING 메시지를 처리하는 함수.

PING 메시지를 보낸 유저에게 PONG 메시지를 전송한다.

매개변수
socket메시지를 보낸 유저의 소켓.
commandcommand.
parametersparameters.
trailingtrailing.
password사용되지 않음.
network메시지 처리에 사용될 네트워크 객체.

◆ PONG()

void grc::IRC::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 )
staticprivate

PONG 메시지를 처리하는 함수.

유저가 PONG 메시지를 보낸 경우, 해당 유저를 등록시킨다.

매개변수
socket메시지를 보낸 유저의 소켓.
commandcommand.
parametersparameters.
trailingtrailing.
password사용되지 않음.
network메시지 처리에 사용될 네트워크 객체.

◆ sendWelcomeMessage()

void grc::IRC::sendWelcomeMessage ( const int32 IN socket,
Network &IN OUT network )
staticprivate

웰컴 메시지를 전송하는 함수.

유저가 등록되면, 웰컴 메시지를 전송한다.

매개변수
socket메시지를 보낸 유저의 소켓.
network메시지 처리에 사용될 네트워크 객체.

◆ isNicknameInUse()

bool grc::IRC::isNicknameInUse ( const std::string &IN nickname)
staticprivate

nickname 중복을 확인하는 함수.

매개변수
nickname찾을 nickname.
반환값
true nickname이 이미 사용 중인 경우, true 반환.
false nickname이 사용 중이지 않은 경우, false 반환.

멤버 데이터 문서화

◆ sStaticCommandFunctionMap

std::map< std::string, IRC::TcommandFunctionPTR > grc::IRC::sStaticCommandFunctionMap
staticprivate

IRC command에 따라 호출해야 하는 함수를 가지고 있는 정적 멤버 변수.

Key = IRC command, Value = command의 함수.


이 클래스에 대한 문서화 페이지는 다음의 파일들로부터 생성되었습니다.: