From 18f355b960d04eda7dc84efc3916fa7bba58e9a1 Mon Sep 17 00:00:00 2001 From: Namonay Date: Wed, 24 Jan 2024 00:44:09 +0100 Subject: [PATCH] gros CAC --- includes/channel.hpp | 4 +++- srcs/channel.cpp | 14 +++++++++++++- srcs/server_functions.cpp | 21 ++------------------- 3 files changed, 18 insertions(+), 21 deletions(-) diff --git a/includes/channel.hpp b/includes/channel.hpp index 3f62ec8..089ab25 100644 --- a/includes/channel.hpp +++ b/includes/channel.hpp @@ -6,7 +6,7 @@ /* By: vvaas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/21 10:34:25 by maldavid #+# #+# */ -/* Updated: 2024/01/23 17:35:49 by maldavid ### ########.fr */ +/* Updated: 2024/01/24 00:42:16 by vvaas ### ########.fr */ /* */ /******************************************************************************/ @@ -17,6 +17,7 @@ #include #include #include +#include namespace irc { @@ -37,6 +38,7 @@ namespace irc inline const std::string& getPassword() const { return _password; } void addClient(unstd::SharedPtr client); + void addClient(unstd::SharedPtr client, bool op); bool removeClient(unstd::SharedPtr client); inline std::size_t getNumberOfClients() const { return _clients.size(); } diff --git a/srcs/channel.cpp b/srcs/channel.cpp index 5a2697a..0752ed5 100644 --- a/srcs/channel.cpp +++ b/srcs/channel.cpp @@ -6,7 +6,7 @@ /* By: vvaas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/21 10:36:21 by maldavid #+# #+# */ -/* Updated: 2024/01/23 23:55:17 by vvaas ### ########.fr */ +/* Updated: 2024/01/24 00:42:13 by vvaas ### ########.fr */ /* */ /******************************************************************************/ @@ -29,6 +29,18 @@ namespace irc for(std::set >::iterator it = _clients.begin(); it != _clients.end(); ++it) const_cast&>(*it)->sendMsg(client->getNickName(), "JOIN", _name); } + void Channel::addClient(unstd::SharedPtr client, bool op) + { + if (!_clients.insert(client).second) + { + client->sendCode(ERR_USERONCHANNEL, "You are already in the channel"); + return ; + } + if (op) + _operators.insert(client); + for(std::set >::iterator it = _clients.begin(); it != _clients.end(); ++it) + const_cast&>(*it)->sendMsg(client->getNickName(), "JOIN", _name); + } bool Channel::removeClient(unstd::SharedPtr client) { diff --git a/srcs/server_functions.cpp b/srcs/server_functions.cpp index bf5a002..c6c6a92 100644 --- a/srcs/server_functions.cpp +++ b/srcs/server_functions.cpp @@ -6,7 +6,7 @@ /* By: vvaas +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/22 17:31:06 by maldavid #+# #+# */ -/* Updated: 2024/01/24 00:23:29 by vvaas ### ########.fr */ +/* Updated: 2024/01/24 00:43:01 by vvaas ### ########.fr */ /* */ /******************************************************************************/ @@ -157,7 +157,7 @@ namespace irc logs::report(log_message, "channel '%s' has been created", msg.getTokens()[1].c_str()); } else - it->addClient(client); + it->addClient(client, true); client->printUserHeader(); std::cout << "joining new channel, " << msg.getTokens()[1] << std::endl; } @@ -211,23 +211,6 @@ namespace irc logs::report(log_error, "TOPIC, invalid channel name '%s'", msg.getTokens()[1].c_str()); return; } - std::vector::iterator it; - for(it = _channels.begin(); it != _channels.end(); ++it) - { - if(msg.getTokens()[1] == it->getName()) - { - - } - } - if(it == _channels.end()) - { - _channels.push_back(Channel(msg.getTokens()[1])); - _channels.back().addClient(client); - logs::report(log_message, "channel '%s' has been created", msg.getTokens()[1].c_str()); - } - for(std::vector >::iterator it = _client.begin(); it != _client.end(); ++it) - { - } } void Server::handlePing(unstd::SharedPtr client, const Message& msg)