Conversion to listless socket management.
This commit is contained in:
1 parent
796ddd511f
commit
cb7a556edf
5 files changed
+37
-80
No files matched your search
+14
-14
@@ -58,26 +58,25 @@ namespace core {
|
||||
|
||||
void Socket::onUnregistered() {}
|
||||
|
||||
bool Socket::eventReceived(struct epoll_event event, int threadId) {
|
||||
bool Socket::eventReceived(struct epoll_event event) {
|
||||
|
||||
// coreutils::Log(coreutils::LOG_DEBUG_2) << "waiting for lock on socket " << descriptor << ".";
|
||||
coreutils::Log(coreutils::LOG_DEBUG_2) << "waiting for lock on socket " << descriptor << ".";
|
||||
|
||||
// lock.lock();
|
||||
// coreutils::Log(coreutils::LOG_DEBUG_2) << "Obtained lock on socket " << descriptor << ".";
|
||||
lock.lock();
|
||||
coreutils::Log(coreutils::LOG_DEBUG_2) << "Obtained lock on socket " << descriptor << ".";
|
||||
|
||||
if(event.events & EPOLLRDHUP) {
|
||||
coreutils::Log(coreutils::LOG_DEBUG_1) << "start EPOLLRDHUP " << descriptor;
|
||||
readHangup = true;
|
||||
shutdown("hangup received");
|
||||
// lock.unlock();
|
||||
// coreutils::Log(coreutils::LOG_DEBUG_2) << "Release lock on socket " << descriptor << ". RDHUP";
|
||||
lock.unlock();
|
||||
coreutils::Log(coreutils::LOG_DEBUG_2) << "Release lock on socket " << descriptor << ". RDHUP";
|
||||
return false;
|
||||
}
|
||||
|
||||
if(event.events & EPOLLIN) {
|
||||
coreutils::Log(coreutils::LOG_DEBUG_1) << "start EPOLLIN " << descriptor;
|
||||
receiveData(buffer, length);
|
||||
ePoll.resetRead(this);
|
||||
}
|
||||
|
||||
if(event.events & EPOLLWRNORM) {
|
||||
@@ -88,14 +87,15 @@ namespace core {
|
||||
if(event.events & EPOLLHUP) {
|
||||
coreutils::Log(coreutils::LOG_DEBUG_1) << "start EPOLLHUP " << descriptor;
|
||||
shutdown();
|
||||
// lock.unlock();
|
||||
// coreutils::Log(coreutils::LOG_DEBUG_2) << "Release lock on socket " << descriptor << ". HUP";
|
||||
lock.unlock();
|
||||
coreutils::Log(coreutils::LOG_DEBUG_2) << "Release lock on socket " << descriptor << ". HUP";
|
||||
return false;
|
||||
}
|
||||
|
||||
// lock.unlock();
|
||||
// coreutils::Log(coreutils::LOG_DEBUG_2) << "Release lock on socket " << descriptor << " with reset " << reset << ".";
|
||||
lock.unlock();
|
||||
coreutils::Log(coreutils::LOG_DEBUG_2) << "Release lock on socket " << descriptor << " with reset " << reset << ".";
|
||||
|
||||
reset = true;
|
||||
return reset;
|
||||
}
|
||||
|
||||
@@ -146,8 +146,8 @@ namespace core {
|
||||
coreutils::Log(coreutils::LOG_DEBUG_3) << "Writing data to socket " << getDescriptor() << " [" << fifo.front() << "].";
|
||||
::write(descriptor, fifo.front().c_str(), fifo.front().length());
|
||||
fifo.pop();
|
||||
// if(shutDown && !needsToWrite())
|
||||
// delete this;
|
||||
if(shutDown && !needsToWrite())
|
||||
delete this;
|
||||
outlock.unlock();
|
||||
}
|
||||
}
|
||||
@@ -158,7 +158,7 @@ namespace core {
|
||||
fifo.emplace(data);
|
||||
coreutils::Log(coreutils::LOG_DEBUG_4) << "Enabling write on socket " << getDescriptor() << " with " << fifo.size() << " entries to write.";
|
||||
outlock.unlock();
|
||||
ePoll.resetWrite(this);
|
||||
ePoll.resetSocket(this);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user