suppressing socketStream warnings during shutdown initiated by SIGINT

This commit is contained in:
Daniel Graczer 2020-08-26 12:13:21 +07:00 committed by Mathias LANG
parent a027c233c2
commit a462db4e04

View file

@ -21,6 +21,7 @@ import eventcore.internal.utils;
import core.time : MonoTime; import core.time : MonoTime;
import std.algorithm.comparison : among, min, max; import std.algorithm.comparison : among, min, max;
import std.format : format;
version (Posix) { version (Posix) {
package alias sock_t = int; package alias sock_t = int;
@ -116,14 +117,23 @@ final class PosixEventDriver(Loop : PosixEventLoop) : EventDriver {
return thname.length ? thname : "unknown"; return thname.length ? thname : "unknown";
} }
if (m_loop.m_handleCount > 0) { string leaking_handle_desc;
print("Warning (thread: %s): leaking eventcore driver because there are still active handles", getThreadName()); foreach (id, ref s; m_loop.m_fds) {
foreach (id, ref s; m_loop.m_fds) if (!s.specific.hasType!(typeof(null)) && !(s.common.flags & FDFlags.internal) &&
if (!s.specific.hasType!(typeof(null)) && !(s.common.flags & FDFlags.internal)) (!s.specific.hasType!(StreamSocketSlot) || s.streamSocket.state == ConnectionState.connected))
print(" FD %s (%s)", id, s.specific.kind); try {
return false; leaking_handle_desc ~= format!" FD %s (%s)\n"(id, s.specific.kind);
} catch (Exception ex) { print("exception happened in Driver.dispose() during formatting"); }
} }
if(leaking_handle_desc.length) {
print("Warning (thread: %s): leaking eventcore driver because there are still active handles", getThreadName());
print(leaking_handle_desc);
}
if (m_loop.m_handleCount > 0)
return false;
m_processes.dispose(); m_processes.dispose();
m_files.dispose(); m_files.dispose();
m_dns.dispose(); m_dns.dispose();