X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fnet%2Fclientsocket.cpp;h=c400f80e9848946a4c6bff0d8b980c86b156ad3a;hb=6625cf0e574406425c35d33110f8d99617e902df;hp=d28d0e90b930487b4a573cb751356baf10575666;hpb=30f362b6a1257aa0a01a926de8b774fe90d4be39;p=libs%2Fnet.git diff --git a/source/net/clientsocket.cpp b/source/net/clientsocket.cpp index d28d0e9..c400f80 100644 --- a/source/net/clientsocket.cpp +++ b/source/net/clientsocket.cpp @@ -1,9 +1,4 @@ -#ifdef WIN32 -#include -#else -#include -#include -#endif +#include "platform_api.h" #include #include "clientsocket.h" #include "socket_private.h" @@ -12,15 +7,11 @@ namespace Msp { namespace Net { ClientSocket::ClientSocket(Family af, int type, int proto): - Socket(af, type, proto), - connecting(false), - connected(false), - peer_addr(0) + Socket(af, type, proto) { } ClientSocket::ClientSocket(const Private &p, const SockAddr &paddr): Socket(p), - connecting(false), connected(true), peer_addr(paddr.copy()) { } @@ -36,7 +27,7 @@ void ClientSocket::shutdown(IO::Mode m) { int how; m = m&IO::M_RDWR; -#ifdef WIN32 +#ifdef _WIN32 if(m==IO::M_READ) how = SD_RECEIVE; else if(m==IO::M_WRITE) @@ -65,7 +56,7 @@ const SockAddr &ClientSocket::get_peer_address() const return *peer_addr; } -unsigned ClientSocket::do_write(const char *buf, unsigned size) +size_t ClientSocket::do_write(const char *buf, size_t size) { check_access(IO::M_WRITE); if(!connected) @@ -74,19 +65,10 @@ unsigned ClientSocket::do_write(const char *buf, unsigned size) if(size==0) return 0; - int ret = ::send(priv->handle, buf, size, 0); - if(ret<0) - { - if(errno==EAGAIN) - return 0; - else - throw system_error("send"); - } - - return ret; + return check_sys_error(::send(priv->handle, buf, size, 0), "send"); } -unsigned ClientSocket::do_read(char *buf, unsigned size) +size_t ClientSocket::do_read(char *buf, size_t size) { check_access(IO::M_READ); if(!connected) @@ -95,19 +77,12 @@ unsigned ClientSocket::do_read(char *buf, unsigned size) if(size==0) return 0; - int ret = ::recv(priv->handle, buf, size, 0); - if(ret<0) - { - if(errno==EAGAIN) - return 0; - else - throw system_error("recv"); - } - else if(ret==0 && !eof_flag) + size_t ret = check_sys_error(::recv(priv->handle, buf, size, 0), "recv"); + if(ret==0 && !eof_flag) { eof_flag = true; + set_socket_events(S_NONE); signal_end_of_file.emit(); - set_events(IO::P_NONE); } return ret;