diff options
author | and42 <and42@yandex-team.ru> | 2022-02-10 16:47:12 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:47:12 +0300 |
commit | 984590e9d9d7c0f912885d93ae78be402ae7b4f4 (patch) | |
tree | 339adc63bce23800021202ae4a8328a843dc447a /util/network/endpoint.cpp | |
parent | 4fc9a1a64db469cc94894abfec740aa5c9e9789b (diff) | |
download | ydb-984590e9d9d7c0f912885d93ae78be402ae7b4f4.tar.gz |
Restoring authorship annotation for <and42@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'util/network/endpoint.cpp')
-rw-r--r-- | util/network/endpoint.cpp | 104 |
1 files changed, 52 insertions, 52 deletions
diff --git a/util/network/endpoint.cpp b/util/network/endpoint.cpp index 80dc18d63e..9acdd06940 100644 --- a/util/network/endpoint.cpp +++ b/util/network/endpoint.cpp @@ -1,67 +1,67 @@ -#include "endpoint.h" +#include "endpoint.h" #include "sock.h" - -TEndpoint::TEndpoint(const TEndpoint::TAddrRef& addr) - : Addr_(addr) -{ - const sockaddr* sa = Addr_->Addr(); - + +TEndpoint::TEndpoint(const TEndpoint::TAddrRef& addr) + : Addr_(addr) +{ + const sockaddr* sa = Addr_->Addr(); + if (sa->sa_family != AF_INET && sa->sa_family != AF_INET6 && sa->sa_family != AF_UNIX) { ythrow yexception() << TStringBuf("endpoint can contain only ipv4, ipv6 or unix address"); - } -} - -TEndpoint::TEndpoint() - : Addr_(new NAddr::TIPv4Addr(TIpAddress(TIpHost(0), TIpPort(0)))) -{ -} - -void TEndpoint::SetPort(ui16 port) { + } +} + +TEndpoint::TEndpoint() + : Addr_(new NAddr::TIPv4Addr(TIpAddress(TIpHost(0), TIpPort(0)))) +{ +} + +void TEndpoint::SetPort(ui16 port) { if (Port() == port || Addr_->Addr()->sa_family == AF_UNIX) { - return; - } - - NAddr::TOpaqueAddr* oa = new NAddr::TOpaqueAddr(Addr_.Get()); - Addr_.Reset(oa); - sockaddr* sa = oa->MutableAddr(); - - if (sa->sa_family == AF_INET) { - ((sockaddr_in*)sa)->sin_port = HostToInet(port); - } else { - ((sockaddr_in6*)sa)->sin6_port = HostToInet(port); - } -} - + return; + } + + NAddr::TOpaqueAddr* oa = new NAddr::TOpaqueAddr(Addr_.Get()); + Addr_.Reset(oa); + sockaddr* sa = oa->MutableAddr(); + + if (sa->sa_family == AF_INET) { + ((sockaddr_in*)sa)->sin_port = HostToInet(port); + } else { + ((sockaddr_in6*)sa)->sin6_port = HostToInet(port); + } +} + ui16 TEndpoint::Port() const noexcept { if (Addr_->Addr()->sa_family == AF_UNIX) { return 0; } - const sockaddr* sa = Addr_->Addr(); - - if (sa->sa_family == AF_INET) { - return InetToHost(((const sockaddr_in*)sa)->sin_port); - } else { - return InetToHost(((const sockaddr_in6*)sa)->sin6_port); - } -} - -size_t TEndpoint::Hash() const { - const sockaddr* sa = Addr_->Addr(); - - if (sa->sa_family == AF_INET) { - const sockaddr_in* sa4 = (const sockaddr_in*)sa; - - return IntHash((((ui64)sa4->sin_addr.s_addr) << 16) ^ sa4->sin_port); + const sockaddr* sa = Addr_->Addr(); + + if (sa->sa_family == AF_INET) { + return InetToHost(((const sockaddr_in*)sa)->sin_port); + } else { + return InetToHost(((const sockaddr_in6*)sa)->sin6_port); + } +} + +size_t TEndpoint::Hash() const { + const sockaddr* sa = Addr_->Addr(); + + if (sa->sa_family == AF_INET) { + const sockaddr_in* sa4 = (const sockaddr_in*)sa; + + return IntHash((((ui64)sa4->sin_addr.s_addr) << 16) ^ sa4->sin_port); } else if (sa->sa_family == AF_INET6) { - const sockaddr_in6* sa6 = (const sockaddr_in6*)sa; - const ui64* ptr = (const ui64*)&sa6->sin6_addr; - - return IntHash(ptr[0] ^ ptr[1] ^ sa6->sin6_port); + const sockaddr_in6* sa6 = (const sockaddr_in6*)sa; + const ui64* ptr = (const ui64*)&sa6->sin6_addr; + + return IntHash(ptr[0] ^ ptr[1] ^ sa6->sin6_port); } else { const sockaddr_un* un = (const sockaddr_un*)sa; THash<TString> strHash; return strHash(un->sun_path); - } -} + } +} |