Add adoptDatagramSocketInternal.

This commit is contained in:
Sönke Ludwig 2017-11-25 00:26:44 +01:00
parent c8eb30f6f0
commit a5d4cf875c

View file

@ -580,12 +580,17 @@ final class PosixEventDriverSockets(Loop : PosixEventLoop) : EventDriverSockets
} }
final override DatagramSocketFD adoptDatagramSocket(int socket) final override DatagramSocketFD adoptDatagramSocket(int socket)
{
return adoptDatagramSocketInternal(socket, false);
}
package DatagramSocketFD adoptDatagramSocketInternal(int socket, bool is_internal = true)
{ {
auto fd = DatagramSocketFD(socket); auto fd = DatagramSocketFD(socket);
if (m_loop.m_fds[fd].common.refCount) // FD already in use? if (m_loop.m_fds[fd].common.refCount) // FD already in use?
return DatagramSocketFD.init; return DatagramSocketFD.init;
setSocketNonBlocking(fd); setSocketNonBlocking(fd);
m_loop.initFD(fd, FDFlags.none); m_loop.initFD(fd, is_internal ? FDFlags.internal : FDFlags.none);
m_loop.registerFD(fd, EventMask.read|EventMask.write|EventMask.status); m_loop.registerFD(fd, EventMask.read|EventMask.write|EventMask.status);
m_loop.m_fds[fd].specific = DgramSocketSlot.init; m_loop.m_fds[fd].specific = DgramSocketSlot.init;
return fd; return fd;