diff options
author | Anton Samokhvalov <[email protected]> | 2022-02-10 16:45:15 +0300 |
---|---|---|
committer | Daniil Cherednik <[email protected]> | 2022-02-10 16:45:15 +0300 |
commit | 72cb13b4aff9bc9cf22e49251bc8fd143f82538f (patch) | |
tree | da2c34829458c7d4e74bdfbdf85dff449e9e7fb8 /library/cpp/actors/interconnect/interconnect_stream.cpp | |
parent | 778e51ba091dc39e7b7fcab2b9cf4dbedfb6f2b5 (diff) |
Restoring authorship annotation for Anton Samokhvalov <[email protected]>. Commit 1 of 2.
Diffstat (limited to 'library/cpp/actors/interconnect/interconnect_stream.cpp')
-rw-r--r-- | library/cpp/actors/interconnect/interconnect_stream.cpp | 340 |
1 files changed, 170 insertions, 170 deletions
diff --git a/library/cpp/actors/interconnect/interconnect_stream.cpp b/library/cpp/actors/interconnect/interconnect_stream.cpp index 158ebc9e1d5..52e4491cecf 100644 --- a/library/cpp/actors/interconnect/interconnect_stream.cpp +++ b/library/cpp/actors/interconnect/interconnect_stream.cpp @@ -23,74 +23,74 @@ #include <cerrno> namespace NInterconnect { - namespace { - inline int - LastSocketError() { + namespace { + inline int + LastSocketError() { #if defined(_win_) - return WSAGetLastError(); + return WSAGetLastError(); #else - return errno; + return errno; #endif - } - } - - TSocket::TSocket(SOCKET fd) - : Descriptor(fd) - { - } - - TSocket::~TSocket() { - if (Descriptor == INVALID_SOCKET) { - return; - } - - auto const result = ::closesocket(Descriptor); - if (result == 0) - return; - switch (LastSocketError()) { - case EBADF: - Y_FAIL("Close bad descriptor"); - case EINTR: - break; - case EIO: - Y_FAIL("EIO"); - default: - Y_FAIL("It's something unexpected"); - } - } - - int TSocket::GetDescriptor() { - return Descriptor; - } - - int - TSocket::Bind(const TAddress& addr) const { - const auto ret = ::bind(Descriptor, addr.SockAddr(), addr.Size()); - if (ret < 0) - return -LastSocketError(); - - return 0; - } - - int - TSocket::Shutdown(int how) const { - const auto ret = ::shutdown(Descriptor, how); - if (ret < 0) - return -LastSocketError(); - - return 0; - } - - int TSocket::GetConnectStatus() const { - int err = 0; - socklen_t len = sizeof(err); - if (getsockopt(Descriptor, SOL_SOCKET, SO_ERROR, reinterpret_cast<char*>(&err), &len) == -1) { - err = LastSocketError(); - } - return err; - } - - ///////////////////////////////////////////////////////////////// + } + } + + TSocket::TSocket(SOCKET fd) + : Descriptor(fd) + { + } + + TSocket::~TSocket() { + if (Descriptor == INVALID_SOCKET) { + return; + } + + auto const result = ::closesocket(Descriptor); + if (result == 0) + return; + switch (LastSocketError()) { + case EBADF: + Y_FAIL("Close bad descriptor"); + case EINTR: + break; + case EIO: + Y_FAIL("EIO"); + default: + Y_FAIL("It's something unexpected"); + } + } + + int TSocket::GetDescriptor() { + return Descriptor; + } + + int + TSocket::Bind(const TAddress& addr) const { + const auto ret = ::bind(Descriptor, addr.SockAddr(), addr.Size()); + if (ret < 0) + return -LastSocketError(); + + return 0; + } + + int + TSocket::Shutdown(int how) const { + const auto ret = ::shutdown(Descriptor, how); + if (ret < 0) + return -LastSocketError(); + + return 0; + } + + int TSocket::GetConnectStatus() const { + int err = 0; + socklen_t len = sizeof(err); + if (getsockopt(Descriptor, SOL_SOCKET, SO_ERROR, reinterpret_cast<char*>(&err), &len) == -1) { + err = LastSocketError(); + } + return err; + } + + ///////////////////////////////////////////////////////////////// TIntrusivePtr<TStreamSocket> TStreamSocket::Make(int domain) { const SOCKET res = ::socket(domain, SOCK_STREAM | SOCK_NONBLOCK, 0); @@ -99,106 +99,106 @@ namespace NInterconnect { Y_VERIFY(err != EMFILE && err != ENFILE); } return MakeIntrusive<TStreamSocket>(res); - } + } - TStreamSocket::TStreamSocket(SOCKET fd) - : TSocket(fd) - { - } + TStreamSocket::TStreamSocket(SOCKET fd) + : TSocket(fd) + { + } - ssize_t + ssize_t TStreamSocket::Send(const void* msg, size_t len, TString* /*err*/) const { const auto ret = ::send(Descriptor, static_cast<const char*>(msg), int(len), 0); - if (ret < 0) - return -LastSocketError(); + if (ret < 0) + return -LastSocketError(); - return ret; - } + return ret; + } - ssize_t + ssize_t TStreamSocket::Recv(void* buf, size_t len, TString* /*err*/) const { const auto ret = ::recv(Descriptor, static_cast<char*>(buf), int(len), 0); - if (ret < 0) - return -LastSocketError(); + if (ret < 0) + return -LastSocketError(); - return ret; - } + return ret; + } - ssize_t - TStreamSocket::WriteV(const struct iovec* iov, int iovcnt) const { + ssize_t + TStreamSocket::WriteV(const struct iovec* iov, int iovcnt) const { #ifndef _win_ - const auto ret = ::writev(Descriptor, iov, iovcnt); - if (ret < 0) - return -LastSocketError(); - return ret; + const auto ret = ::writev(Descriptor, iov, iovcnt); + if (ret < 0) + return -LastSocketError(); + return ret; #else Y_FAIL("WriteV() unsupported on Windows"); #endif - } + } - ssize_t - TStreamSocket::ReadV(const struct iovec* iov, int iovcnt) const { + ssize_t + TStreamSocket::ReadV(const struct iovec* iov, int iovcnt) const { #ifndef _win_ - const auto ret = ::readv(Descriptor, iov, iovcnt); - if (ret < 0) - return -LastSocketError(); - return ret; + const auto ret = ::readv(Descriptor, iov, iovcnt); + if (ret < 0) + return -LastSocketError(); + return ret; #else Y_FAIL("ReadV() unsupported on Windows"); #endif - } + } - ssize_t TStreamSocket::GetUnsentQueueSize() const { - int num = -1; + ssize_t TStreamSocket::GetUnsentQueueSize() const { + int num = -1; #ifndef _win_ // we have no means to determine output queue size on Windows - if (ioctl(Descriptor, TIOCOUTQ, &num) == -1) { - num = -1; - } -#endif - return num; - } - - int - TStreamSocket::Connect(const TAddress& addr) const { - const auto ret = ::connect(Descriptor, addr.SockAddr(), addr.Size()); - if (ret < 0) - return -LastSocketError(); - - return ret; - } - - int - TStreamSocket::Connect(const NAddr::IRemoteAddr* addr) const { - const auto ret = ::connect(Descriptor, addr->Addr(), addr->Len()); - if (ret < 0) - return -LastSocketError(); - - return ret; - } - - int - TStreamSocket::Listen(int backlog) const { - const auto ret = ::listen(Descriptor, backlog); - if (ret < 0) - return -LastSocketError(); - - return ret; - } - - int - TStreamSocket::Accept(TAddress& acceptedAddr) const { - socklen_t acceptedSize = sizeof(::sockaddr_in6); - const auto ret = ::accept(Descriptor, acceptedAddr.SockAddr(), &acceptedSize); - if (ret == INVALID_SOCKET) - return -LastSocketError(); - - return ret; - } - - void - TStreamSocket::SetSendBufferSize(i32 len) const { - (void)SetSockOpt(Descriptor, SOL_SOCKET, SO_SNDBUF, len); - } + if (ioctl(Descriptor, TIOCOUTQ, &num) == -1) { + num = -1; + } +#endif + return num; + } + + int + TStreamSocket::Connect(const TAddress& addr) const { + const auto ret = ::connect(Descriptor, addr.SockAddr(), addr.Size()); + if (ret < 0) + return -LastSocketError(); + + return ret; + } + + int + TStreamSocket::Connect(const NAddr::IRemoteAddr* addr) const { + const auto ret = ::connect(Descriptor, addr->Addr(), addr->Len()); + if (ret < 0) + return -LastSocketError(); + + return ret; + } + + int + TStreamSocket::Listen(int backlog) const { + const auto ret = ::listen(Descriptor, backlog); + if (ret < 0) + return -LastSocketError(); + + return ret; + } + + int + TStreamSocket::Accept(TAddress& acceptedAddr) const { + socklen_t acceptedSize = sizeof(::sockaddr_in6); + const auto ret = ::accept(Descriptor, acceptedAddr.SockAddr(), &acceptedSize); + if (ret == INVALID_SOCKET) + return -LastSocketError(); + + return ret; + } + + void + TStreamSocket::SetSendBufferSize(i32 len) const { + (void)SetSockOpt(Descriptor, SOL_SOCKET, SO_SNDBUF, len); + } ui32 TStreamSocket::GetSendBufferSize() const { ui32 res = 0; @@ -206,7 +206,7 @@ namespace NInterconnect { return res; } - ////////////////////////////////////////////////////// + ////////////////////////////////////////////////////// TDatagramSocket::TPtr TDatagramSocket::Make(int domain) { const SOCKET res = ::socket(domain, SOCK_DGRAM, 0); @@ -215,31 +215,31 @@ namespace NInterconnect { Y_VERIFY(err != EMFILE && err != ENFILE); } return std::make_shared<TDatagramSocket>(res); - } - - TDatagramSocket::TDatagramSocket(SOCKET fd) - : TSocket(fd) - { - } - - ssize_t - TDatagramSocket::SendTo(const void* msg, size_t len, const TAddress& toAddr) const { - const auto ret = ::sendto(Descriptor, static_cast<const char*>(msg), int(len), 0, toAddr.SockAddr(), toAddr.Size()); - if (ret < 0) - return -LastSocketError(); - - return ret; - } - - ssize_t - TDatagramSocket::RecvFrom(void* buf, size_t len, TAddress& fromAddr) const { - socklen_t fromSize = sizeof(::sockaddr_in6); - const auto ret = ::recvfrom(Descriptor, static_cast<char*>(buf), int(len), 0, fromAddr.SockAddr(), &fromSize); - if (ret < 0) - return -LastSocketError(); - - return ret; - } + } + + TDatagramSocket::TDatagramSocket(SOCKET fd) + : TSocket(fd) + { + } + + ssize_t + TDatagramSocket::SendTo(const void* msg, size_t len, const TAddress& toAddr) const { + const auto ret = ::sendto(Descriptor, static_cast<const char*>(msg), int(len), 0, toAddr.SockAddr(), toAddr.Size()); + if (ret < 0) + return -LastSocketError(); + + return ret; + } + + ssize_t + TDatagramSocket::RecvFrom(void* buf, size_t len, TAddress& fromAddr) const { + socklen_t fromSize = sizeof(::sockaddr_in6); + const auto ret = ::recvfrom(Descriptor, static_cast<char*>(buf), int(len), 0, fromAddr.SockAddr(), &fromSize); + if (ret < 0) + return -LastSocketError(); + + return ret; + } // deleter for SSL objects |