Fixed multithread sync issue and duplicate thread on termination.
This commit is contained in:
1 parent
b0118cfc56
commit
cfa70c5863
72 files changed
+395
-427
No files matched your search
@@ -67,16 +67,6 @@ namespace core {
|
||||
return terminateThreads;
|
||||
}
|
||||
|
||||
bool EPoll::registerSocket(Socket *socket) {
|
||||
enableSocket(socket);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool EPoll::unregisterSocket(Socket *socket) {
|
||||
disableSocket(socket);
|
||||
return true;
|
||||
}
|
||||
|
||||
int EPoll::getDescriptor() {
|
||||
return epfd;
|
||||
}
|
||||
@@ -91,27 +81,4 @@ namespace core {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void EPoll::enableSocket(Socket *socket) {
|
||||
struct epoll_event event;
|
||||
event.data.ptr = socket;
|
||||
event.events = EPOLLIN | EPOLLONESHOT | EPOLLRDHUP | EPOLLET;
|
||||
epoll_ctl(epfd, EPOLL_CTL_ADD, socket->getDescriptor(), &event);
|
||||
// coreutils::Log(coreutils::LOG_DEBUG_4) << "BMAXenable: " << socket->getDescriptor();
|
||||
}
|
||||
|
||||
void EPoll::disableSocket(Socket *socket) {
|
||||
epoll_ctl(epfd, EPOLL_CTL_DEL, socket->getDescriptor(), NULL);
|
||||
// coreutils::Log(coreutils::LOG_DEBUG_4) << "BMAXdisable: " << socket->getDescriptor();
|
||||
}
|
||||
|
||||
void EPoll::resetSocket(Socket *socket) {
|
||||
struct epoll_event event;
|
||||
event.data.ptr = socket;
|
||||
event.events = EPOLLIN | EPOLLONESHOT | EPOLLRDHUP | EPOLLET;
|
||||
if(socket->needsToWrite() && !socket->shutDown)
|
||||
event.events |= EPOLLWRNORM;
|
||||
epoll_ctl(epfd, EPOLL_CTL_MOD, socket->getDescriptor(), &event);
|
||||
// coreutils::Log(coreutils::LOG_DEBUG_4) << "BMAXreset: " << socket->getDescriptor();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user