#ifndef SERVER_HPP #define SERVER_HPP #include #include #include #include // Include for the send function #include // Include for the strlen function #include #include #include #include #include #include #include #include "Client.hpp" #include #include #include "channel.hpp" #define BUFFER_SIZE 1024 class Server { private: int _port; int _serverSocketFd; static bool _signal; std::string _password; std::vector _fds; std::vector _clients; // THAT'S THA DATA OF TOOOP GGG START FROM THERE . std::map nicknames; // Replace unordered_map with map std::map usernamesoperators; // Replace unordered_map with map std::map usernames; // Replace unordered_map with map std::map usernamesregulars; // std::map > channels; //here a chanel name and list of client in every chanel std::map channels; public: Server(); ~Server(); // THAT'S MY FUNCTIONS START FROM THERE void setNickname(int fd, const std::string& nickname); std::string getPassowrd() const; void setPassword(const std::string& password); void setUsernameoperators(int fd, const std::string& username); void setUsernames(int fd, const std::string& username); void setUsernameregular(int fd, const std::string& username); void createChannel(const std::string& channel, const std::string& nickname, int fd); void handlePrivateMessage(int senderFd, const std::string& recipient, const std::string& message); void broadcastMessage(const std::string& channel, const std::string& senderNickname, const std::string& msg, int fd); int findUserFd1(const std::string& username); std::string findUsernameforsending(int fd); bool isOperator(int fd); void kickUser(int fd); int findUserFdforkickregulars(const std::string& username); // AND END HERE. void parseArgs(int ac, char **av); static void receiveSignal(int signum); void init(); void run(); void createServerSocket(); void bindServerSocket(); void addPollfd(int fd, short events, short revents); void handleClientConnection(); void handleClientData(int fd); void clientCleanup(int fd); void closeFds(); void debugPrintChannels() { std::cout << "List of channels:" << std::endl; std::map::iterator it; for (it = channels.begin(); it != channels.end(); ++it) { std::cout << "- " << it->first << std::endl; // Print the channel name (it->first) } } }; #endif