update server.start(), server.poll().polloop() and /JOIN ok
This commit is contained in:
parent
150ada2f4e
commit
3aad000a49
10 changed files with 122 additions and 77 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue