GameRC (IRC Server)  1.0.0
C++98 기반 IRC 서버 프로젝트
로딩중...
검색중...
일치하는것 없음
ChannelManager.hpp
이 파일의 문서화 페이지로 가기
1/**
2 * @file ChannelManager.hpp
3 * @author Taeil-Nam (nam0314@gmail.com)
4 * @brief ChannelManager 클래스 정의 헤더 파일.
5 * @version 0.1
6 * @date 2024-04-01
7 *
8 * @copyright Copyright (c) 2024
9 *
10 */
11
12#pragma once
13
14#include "common.hpp"
15#include "Channel.hpp"
16
17namespace grc
18{
19
20/**
21 * @class ChannelManager
22 * @brief Channel 객체들을 관리하는 정적 클래스.
23 *
24 */
26{
27public:
28 /**
29 * @brief Channel 객체가 존재하는지 확인하는 함수.
30 *
31 * @param channelName 찾을 Channel 객체의 이름.
32 * @return true
33 * @return false
34 */
35 static bool IsChannelExist(const std::string& IN channelName);
36
37 /**
38 * @brief 특정 Channel 객체를 반환하는 함수.
39 *
40 * 없는 채널에 대해서 함수를 호출하는 경우, Assertion 발생.
41 *
42 * @param channelName 찾을 Channel 객체의 이름.
43 * @return Channel& : Channel의 객체를 반환.
44 */
45 static Channel& GetChannel(const std::string IN channelName);
46 /**
47 * @brief 현재 모든 Channel 객체의 목록을 반환하는 함수.
48 *
49 * @return std::map<std::string, Channel>& : 멤버 변수 sStaticChannels 반환.
50 */
51 static std::map<std::string, Channel>& GetChannels();
52
53 /**
54 * @brief Channel 객체를 추가하는 함수.
55 *
56 * @param channelName 추가할 Channel 객체의 이름.
57 */
58 static void AddChannel(const std::string& IN channelName);
59 /**
60 * @brief Channel 객체를 삭제하는 함수.
61 *
62 * @param channelName 삭제할 Channel 객체의 이름.
63 */
64 static void DeleteChannel(const std::string& IN channelName);
65 /**
66 * @brief 특정 채널에 존재하는 유저를 삭제하는 함수.
67 *
68 * @param user 삭제할 User 객체.
69 * @param channelName 유저가 삭제될 Channel 객체의 이름.
70 */
71 static void DeleteUserFromChannel(const User& IN user, const std::string& channelName);
72 /**
73 * @brief 모든 채널에서 유저를 삭제하는 함수.
74 *
75 * @param user 삭제할 User 객체.
76 */
77 static void DeleteUserFromAllChannels(const User& IN user);
78 /**
79 * @brief 채널이 비었는지 확인 후, 채널을 삭제하는 함수.
80 *
81 * 채널이 비어있지 않은 경우 삭제하지 않는다.
82 *
83 * @param channel 검사할 Channel 객체의 이름.
84 */
85 static void CheckIsEmptyChannelAndDelete(const Channel& IN channel);
86private:
87 /**
88 * @brief ChannelManager 객체의 기본 생성자. (사용되지 않음)
89 *
90 */
91 ChannelManager(); // = delete
92
93
94private:
95 /**
96 * @brief 현재 IRC에 생성된 모든 Channel 객체의 목록.
97 *
98 */
99 static std::map<std::string, Channel> sStaticChannels;
100};
101
102}
프로그램 전반적으로 사용되는 공용 헤더 파일.
IRC에서 생성되는 Channel 객체를 정의하는 클래스.
Definition Channel.hpp:25
Channel 객체들을 관리하는 정적 클래스.
Definition ChannelManager.hpp:26
ChannelManager()
ChannelManager 객체의 기본 생성자.
static void CheckIsEmptyChannelAndDelete(const Channel &IN channel)
채널이 비었는지 확인 후, 채널을 삭제하는 함수.
Definition ChannelManager.cpp:77
static std::map< std::string, Channel > sStaticChannels
현재 IRC에 생성된 모든 Channel 객체의 목록.
Definition ChannelManager.hpp:99
static void AddChannel(const std::string &IN channelName)
Channel 객체를 추가하는 함수.
Definition ChannelManager.cpp:33
static void DeleteUserFromAllChannels(const User &IN user)
모든 채널에서 유저를 삭제하는 함수.
Definition ChannelManager.cpp:60
static void DeleteUserFromChannel(const User &IN user, const std::string &channelName)
특정 채널에 존재하는 유저를 삭제하는 함수.
Definition ChannelManager.cpp:52
static Channel & GetChannel(const std::string IN channelName)
특정 Channel 객체를 반환하는 함수.
Definition ChannelManager.cpp:21
static void DeleteChannel(const std::string &IN channelName)
Channel 객체를 삭제하는 함수.
Definition ChannelManager.cpp:43
static std::map< std::string, Channel > & GetChannels()
현재 모든 Channel 객체의 목록을 반환하는 함수.
Definition ChannelManager.cpp:28
static bool IsChannelExist(const std::string &IN channelName)
Channel 객체가 존재하는지 확인하는 함수.
Definition ChannelManager.cpp:9
IRC에서 생성되는 User 객체를 정의하는 클래스.
Definition User.hpp:26
Definition Earth.cpp:12