diff --git a/sources/commands/topic.cpp b/sources/commands/topic.cpp index a47aae1..84bc55a 100644 --- a/sources/commands/topic.cpp +++ b/sources/commands/topic.cpp @@ -6,7 +6,7 @@ /* By: sben-tay +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/05/24 17:29:48 by rparodi #+# #+# */ -/* Updated: 2025/06/20 17:09:43 by rparodi ### ########.fr */ +/* Updated: 2025/06/20 17:55:27 by sben-tay ### ########.fr */ /* */ /* ************************************************************************** */ @@ -52,15 +52,25 @@ void Topic::execute() { ERROR_MSG("Invalid arguments for TOPIC command (see warning message)"); return; } + if (this->_args.size() == 1) { if (this->_cTarget->getTopic().empty()) { - std::string msg331 = ":localhost 331 " + this->_sender->getNickname() + " " + this->_cTarget->getName() + " :No topic is set" + "\r\n"; + std::string msg331 = ":localhost 331 " + this->_sender->getNickname() + " " + this->_cTarget->getName() + " :No topic is set\r\n"; this->_sender->appendToWriteBuffer(msg331); } else { - std::string msg332 = ":localhost 332 " + this->_sender->getNickname() + " " + this->_cTarget->getName() + " :" + _cTarget->getTopic() + "\r\n"; + std::string msg332 = ":localhost 332 " + this->_sender->getNickname() + " " + this->_cTarget->getName() + " :" + this->_cTarget->getTopic() + "\r\n"; this->_sender->appendToWriteBuffer(msg332); } } else { - this->_cTarget->setTopic(this->_args.at(2)); + std::string newTopic; + for (size_t i = 2; i < this->_args.size(); ++i) { + newTopic += this->_args[i]; + if (i != this->_args.size() - 1) + newTopic += " "; + } + this->_cTarget->setTopic(newTopic); + + std::string topicMsg = ":" + this->_sender->getPrefix() + " TOPIC " + this->_cTarget->getName() + " :" + newTopic + "\r\n"; + this->_cTarget->sendAllClientInAChannel(topicMsg); } } diff --git a/sources/core/Server.cpp b/sources/core/Server.cpp index 0523a54..8aee714 100644 --- a/sources/core/Server.cpp +++ b/sources/core/Server.cpp @@ -6,7 +6,7 @@ /* By: sben-tay +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/05/13 11:11:07 by rparodi #+# #+# */ -/* Updated: 2025/06/19 02:24:05 by sben-tay ### ########.fr */ +/* Updated: 2025/06/20 15:13:42 by sben-tay ### ########.fr */ /* */ /* ************************************************************************** */ @@ -106,9 +106,11 @@ void Server::start() _users[fd]->appendToReadBuffer(data); std::string rawCmd; + DEBUG_MSG("cmd = " << _users[fd]->extractFullCommand()); while (!(rawCmd = _users[fd]->extractFullCommand()).empty()) { std::vector lines = splitLines(rawCmd); for (size_t i = 0; i < lines.size(); ++i) { + DEBUG_MSG("cmd = " << _users[fd]->extractFullCommand()); std::cout << "Client " << fd << " says: " << lines[i] << std::endl; cmd::dispatch(_users[fd], NULL, this, lines[i]); } @@ -126,8 +128,9 @@ void Server::start() std::cerr << "Erreur send sur fd " << fd << std::endl; disconnectClient(fd); } else { - _users[fd]->consumeWriteBuffer(bytesSent); - if (_users[fd]->getWriteBuffer().empty()) + _users[fd]->clearWriteBuffer(); + // _users[fd]->consumeWriteBuffer(bytesSent); + // if (_users[fd]->getWriteBuffer().empty()) _pollManager.setWritable(fd, false); } } diff --git a/sources/user/user.cpp b/sources/user/user.cpp index 11224da..cf97b7b 100644 --- a/sources/user/user.cpp +++ b/sources/user/user.cpp @@ -6,7 +6,7 @@ /* By: sben-tay +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/05/21 20:37:12 by omoudni #+# #+# */ -/* Updated: 2025/06/19 02:23:06 by sben-tay ### ########.fr */ +/* Updated: 2025/06/20 13:40:14 by sben-tay ### ########.fr */ /* */ /* ************************************************************************** */ @@ -123,6 +123,7 @@ std::string User::extractFullCommand() { if (pos != std::string::npos) { std::string command = _read_buffer.substr(0, pos); _read_buffer.erase(0, pos + 2); + DEBUG_MSG(command); return command; } @@ -130,6 +131,7 @@ std::string User::extractFullCommand() { if (pos != std::string::npos) { std::string command = _read_buffer.substr(0, pos); _read_buffer.erase(0, pos + 1); + DEBUG_MSG(command); return command; }