update server.start(), server.poll().polloop() and /JOIN ok

This commit is contained in:
Samy BEN TAYEB 2025-06-18 01:41:23 +02:00
parent 150ada2f4e
commit 3aad000a49
10 changed files with 122 additions and 77 deletions

View file

@ -18,7 +18,7 @@ PollManager::~PollManager()
}
}
void PollManager::pollLoop(int server_fd, std::vector<int> &newClients, std::vector<int> &disconnected, std::vector<std::pair<int, std::string> > &readyClients)
void PollManager::pollLoop(int server_fd, std::vector<int> &newClients, std::vector<int> &disconnected, std::vector<std::pair<int, std::string> > &readyClients, std::vector<int> &readyToWrite)
{
int poll_count = poll(&_fds[0], _fds.size(), -1);
if (poll_count == -1)
@ -59,6 +59,8 @@ void PollManager::pollLoop(int server_fd, std::vector<int> &newClients, std::vec
--i;
}
}
else if (_fds[i].revents & POLLOUT)
readyToWrite.push_back(fd);
}
// }
}
@ -94,3 +96,15 @@ void PollManager::setServerFd(int fd)
pfd.events = POLLIN;
_fds.push_back(pfd);
}
void PollManager::setWritable(short unsigned fd, bool enable) {
for (size_t i = 0; i < _fds.size(); ++i) {
if (_fds[i].fd == fd) {
if (enable)
_fds[i].events |= POLLOUT;
else
_fds[i].events &= ~POLLOUT;
break;
}
}
}