X-Git-Url: http://git.tdb.fi/?p=libs%2Fnet.git;a=blobdiff_plain;f=source%2Fnet%2Fdatagramsocket.cpp;fp=source%2Fnet%2Fdatagramsocket.cpp;h=fe01ef5c6a6ffc7e2419750679bfaed347238fd3;hp=0e405d6f0cb7972fed62e418d447a2dc4c303b31;hb=88bbb4039aa274c7f41ebe3a18085b63427e5475;hpb=6f6845971a21c2d7e04b87925f5e657f0f20ca0d diff --git a/source/net/datagramsocket.cpp b/source/net/datagramsocket.cpp index 0e405d6..fe01ef5 100644 --- a/source/net/datagramsocket.cpp +++ b/source/net/datagramsocket.cpp @@ -1,7 +1,4 @@ -#ifdef _WIN32 -#include -#endif -#include +#include "platform_api.h" #include #include #include @@ -15,25 +12,13 @@ namespace Net { DatagramSocket::DatagramSocket(Family f, int p): ClientSocket(f, SOCK_DGRAM, p) { -#ifdef _WIN32 - WSAEventSelect(priv->handle, *priv->event, FD_READ|FD_CLOSE); -#endif - set_events(IO::P_INPUT); + set_socket_events(S_INPUT); } bool DatagramSocket::connect(const SockAddr &addr) { SockAddr::SysAddr sa = addr.to_sys(); - - int err = ::connect(priv->handle, reinterpret_cast(&sa.addr), sa.size); - if(err==-1) - { -#ifdef _WIN32 - throw system_error("connect", WSAGetLastError()); -#else - throw system_error("connect"); -#endif - } + check_sys_connect_error(::connect(priv->handle, reinterpret_cast(&sa.addr), sa.size)); delete peer_addr; peer_addr = addr.copy(); @@ -54,23 +39,7 @@ unsigned DatagramSocket::sendto(const char *buf, unsigned size, const SockAddr & return 0; SockAddr::SysAddr sa = addr.to_sys(); - - int ret = ::sendto(priv->handle, buf, size, 0, reinterpret_cast(&sa.addr), sa.size); - if(ret<0) - { - if(errno==EAGAIN) - return 0; - else - { -#ifdef _WIN32 - throw system_error("sendto", WSAGetLastError()); -#else - throw system_error("sendto"); -#endif - } - } - - return ret; + return check_sys_error(::sendto(priv->handle, buf, size, 0, reinterpret_cast(&sa.addr), sa.size), "sendto"); } unsigned DatagramSocket::recvfrom(char *buf, unsigned size, SockAddr *&from_addr) @@ -79,21 +48,7 @@ unsigned DatagramSocket::recvfrom(char *buf, unsigned size, SockAddr *&from_addr return 0; SockAddr::SysAddr sa; - int ret = ::recvfrom(priv->handle, buf, size, 0, reinterpret_cast(&sa.addr), &sa.size); - if(ret<0) - { - if(errno==EAGAIN) - return 0; - else - { -#ifdef _WIN32 - throw system_error("recvfrom", WSAGetLastError()); -#else - throw system_error("recvfrom"); -#endif - } - } - + unsigned ret = check_sys_error(::recvfrom(priv->handle, buf, size, 0, reinterpret_cast(&sa.addr), &sa.size), "recvfrom"); from_addr = SockAddr::new_from_sys(sa); return ret;