Extend datagram socket API.

Adds .setTargetAddress() and makes .getXAddress() work for datagram sockets, too.
This commit is contained in:
Sönke Ludwig 2017-03-10 22:46:43 +01:00
parent 2e5b13ee98
commit 1d330d6330
No known key found for this signature in database
GPG key ID: D95E8DB493EE314C
3 changed files with 15 additions and 6 deletions

View file

@ -213,7 +213,7 @@ final class PosixEventDriverSockets(Loop : PosixEventLoop) : EventDriverSockets
return m_loop.m_fds[sock].streamSocket.state;
}
final override bool getLocalAddress(StreamSocketFD sock, scope RefAddress dst)
final override bool getLocalAddress(SocketFD sock, scope RefAddress dst)
{
socklen_t addr_len = dst.nameLen;
if (() @trusted { return getpeername(cast(sock_t)sock, dst.name, &addr_len); } () != 0)
@ -222,7 +222,7 @@ final class PosixEventDriverSockets(Loop : PosixEventLoop) : EventDriverSockets
return true;
}
final override bool getRemoteAddress(StreamSocketFD sock, scope RefAddress dst)
final override bool getRemoteAddress(SocketFD sock, scope RefAddress dst)
{
socklen_t addr_len = dst.nameLen;
if (() @trusted { return getsockname(cast(sock_t)sock, dst.name, &addr_len); } () != 0)
@ -552,6 +552,11 @@ final class PosixEventDriverSockets(Loop : PosixEventLoop) : EventDriverSockets
return fd;
}
final override void setTargetAddress(DatagramSocketFD socket, scope Address target_address)
{
() @trusted { connect(cast(sock_t)socket, target_address.name, target_address.nameLen); } ();
}
final override bool setBroadcast(DatagramSocketFD socket, bool enable)
{
int tmp_broad = enable;