ft_irc 1.0
読み取り中…
検索中…
一致する文字列を見つけられません
Channel.cpp
[詳解]
1
8#include "Channel.hpp"
9#include "Client.hpp"
10
11Channel::Channel(const std::string &name) : _name(name), _topic(""), _key(""), _limit(0) {
12 // Initialize modes
13 _modes['t'] = false;
14 _modes['n'] = false;
15 _modes['k'] = false;
16 _modes['l'] = false;
17 _modes['i'] = false;
18}
19
21
22const std::string &Channel::getName() const { return _name; }
23
24const std::map<int, Client *> &Channel::getMembers() const { return _members; }
25
26const std::string &Channel::getTopic() const { return _topic; }
27
28void Channel::setTopic(const std::string &topic) { _topic = topic; }
29
30void Channel::addMember(Client *client) { _members[client->getFd()] = client; }
31
33 _members.erase(client->getFd());
34 _operators.erase(client->getFd()); // Also remove from operators if present
35}
36
37bool Channel::isMember(Client *client) const { return _members.find(client->getFd()) != _members.end(); }
38
39void Channel::broadcast(const std::string &message, Client *excludeClient) {
40 for (std::map<int, Client *>::iterator it = _members.begin(); it != _members.end(); ++it) {
41 if (it->second != excludeClient) {
42 it->second->sendMessage(message);
43 }
44 }
45}
46
47void Channel::addOperator(Client *client) { _operators[client->getFd()] = client; }
48
49void Channel::removeOperator(Client *client) { _operators.erase(client->getFd()); }
50
51bool Channel::isOperator(Client *client) const { return _operators.find(client->getFd()) != _operators.end(); }
52
53void Channel::setMode(char mode, bool value) {
54 if (_modes.find(mode) != _modes.end()) {
55 _modes[mode] = value;
56 }
57}
58
59bool Channel::hasMode(char mode) const {
61 if (it != _modes.end()) {
62 return it->second;
63 }
64 return false;
65}
66
68 std::string modes = "+";
69 for (std::map<char, bool>::const_iterator it = _modes.begin(); it != _modes.end(); ++it) {
70 if (it->second) {
71 modes += it->first;
72 }
73 }
74 return modes;
75}
76
77void Channel::setKey(const std::string &key) { _key = key; }
78
79bool Channel::checkKey(const std::string &key) const { return _key == key; }
80
81const std::string &Channel::getKey() const { return _key; }
82
83void Channel::setLimit(unsigned int limit) { _limit = limit; }
84
85unsigned int Channel::getLimit() const { return _limit; }
86
87void Channel::addInvitedUser(Client *client) { _invitedUsers[client->getFd()] = client; }
88
89void Channel::removeInvitedUser(Client *client) { _invitedUsers.erase(client->getFd()); }
90
91bool Channel::isInvitedUser(Client *client) const { return _invitedUsers.find(client->getFd()) != _invitedUsers.end(); }
Manages channel members and states.
Manages client connection and state.
T begin(T... args)
void setMode(char mode, bool value)
Definition Channel.cpp:53
void addMember(Client *client)
Definition Channel.cpp:30
const std::map< int, Client * > & getMembers() const
Definition Channel.cpp:24
unsigned int getLimit() const
Definition Channel.cpp:85
std::string getModes() const
Definition Channel.cpp:67
const std::string & getName() const
Definition Channel.cpp:22
~Channel()
Definition Channel.cpp:20
Channel(const std::string &name)
Definition Channel.cpp:11
bool hasMode(char mode) const
Definition Channel.cpp:59
bool isMember(Client *client) const
Definition Channel.cpp:37
void setTopic(const std::string &topic)
Definition Channel.cpp:28
void addInvitedUser(Client *client)
Definition Channel.cpp:87
void setLimit(unsigned int limit)
Definition Channel.cpp:83
void removeOperator(Client *client)
Definition Channel.cpp:49
void addOperator(Client *client)
Definition Channel.cpp:47
bool isInvitedUser(Client *client) const
Definition Channel.cpp:91
const std::string & getKey() const
Definition Channel.cpp:81
void broadcast(const std::string &message, Client *excludeClient)
Definition Channel.cpp:39
bool isOperator(Client *client) const
Definition Channel.cpp:51
void removeMember(Client *client)
Definition Channel.cpp:32
bool checkKey(const std::string &key) const
Definition Channel.cpp:79
void setKey(const std::string &key)
Definition Channel.cpp:77
void removeInvitedUser(Client *client)
Definition Channel.cpp:89
const std::string & getTopic() const
Definition Channel.cpp:26
Represents an IRC client connected to the server.
Definition Client.hpp:25
int getFd() const
Gets the client's file descriptor.
Definition Client.cpp:23
T end(T... args)
T erase(T... args)
T find(T... args)