diff options
author | Anton Samokhvalov <pg83@yandex.ru> | 2022-02-10 16:45:17 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:45:17 +0300 |
commit | d3a398281c6fd1d3672036cb2d63f842d2cb28c5 (patch) | |
tree | dd4bd3ca0f36b817e96812825ffaf10d645803f2 /util/network/address.h | |
parent | 72cb13b4aff9bc9cf22e49251bc8fd143f82538f (diff) | |
download | ydb-d3a398281c6fd1d3672036cb2d63f842d2cb28c5.tar.gz |
Restoring authorship annotation for Anton Samokhvalov <pg83@yandex.ru>. Commit 2 of 2.
Diffstat (limited to 'util/network/address.h')
-rw-r--r-- | util/network/address.h | 190 |
1 files changed, 95 insertions, 95 deletions
diff --git a/util/network/address.h b/util/network/address.h index 470ca8195a..448fcac0c9 100644 --- a/util/network/address.h +++ b/util/network/address.h @@ -1,136 +1,136 @@ -#pragma once - -#include "ip.h" -#include "socket.h" - -#include <util/generic/ptr.h> +#pragma once + +#include "ip.h" +#include "socket.h" + +#include <util/generic/ptr.h> #include <util/generic/string.h> - -namespace NAddr { - class IRemoteAddr { - public: + +namespace NAddr { + class IRemoteAddr { + public: virtual ~IRemoteAddr() = default; - - virtual const sockaddr* Addr() const = 0; - virtual socklen_t Len() const = 0; - }; - + + virtual const sockaddr* Addr() const = 0; + virtual socklen_t Len() const = 0; + }; + using IRemoteAddrPtr = THolder<IRemoteAddr>; using IRemoteAddrRef = TAtomicSharedPtr<NAddr::IRemoteAddr>; - - IRemoteAddrPtr GetSockAddr(SOCKET s); + + IRemoteAddrPtr GetSockAddr(SOCKET s); IRemoteAddrPtr GetPeerAddr(SOCKET s); void PrintHost(IOutputStream& out, const IRemoteAddr& addr); TString PrintHost(const IRemoteAddr& addr); TString PrintHostAndPort(const IRemoteAddr& addr); - + bool IsLoopback(const IRemoteAddr& addr); bool IsSame(const IRemoteAddr& lhs, const IRemoteAddr& rhs); - socklen_t SockAddrLength(const sockaddr* addr); - - //for accept, recvfrom - see LenPtr() - class TOpaqueAddr: public IRemoteAddr { - public: + socklen_t SockAddrLength(const sockaddr* addr); + + //for accept, recvfrom - see LenPtr() + class TOpaqueAddr: public IRemoteAddr { + public: inline TOpaqueAddr() noexcept - : L_(sizeof(S_)) - { - Zero(S_); - } - + : L_(sizeof(S_)) + { + Zero(S_); + } + inline TOpaqueAddr(const IRemoteAddr* addr) noexcept { Assign(addr->Addr(), addr->Len()); - } - + } + inline TOpaqueAddr(const sockaddr* addr) { - Assign(addr, SockAddrLength(addr)); + Assign(addr, SockAddrLength(addr)); } const sockaddr* Addr() const override { - return MutableAddr(); - } - + return MutableAddr(); + } + socklen_t Len() const override { - return L_; - } - + return L_; + } + inline sockaddr* MutableAddr() const noexcept { - return (sockaddr*)&S_; - } - + return (sockaddr*)&S_; + } + inline socklen_t* LenPtr() noexcept { - return &L_; - } - - private: + return &L_; + } + + private: inline void Assign(const sockaddr* addr, socklen_t len) noexcept { L_ = len; memcpy(MutableAddr(), addr, L_); } private: - sockaddr_storage S_; - socklen_t L_; - }; - - //for TNetworkAddress - class TAddrInfo: public IRemoteAddr { - public: + sockaddr_storage S_; + socklen_t L_; + }; + + //for TNetworkAddress + class TAddrInfo: public IRemoteAddr { + public: inline TAddrInfo(const addrinfo* ai) noexcept - : AI_(ai) - { - } - + : AI_(ai) + { + } + const sockaddr* Addr() const override { - return AI_->ai_addr; - } - + return AI_->ai_addr; + } + socklen_t Len() const override { return (socklen_t)AI_->ai_addrlen; - } - - private: + } + + private: const addrinfo* const AI_; - }; - - //compat, for TIpAddress - class TIPv4Addr: public IRemoteAddr { - public: + }; + + //compat, for TIpAddress + class TIPv4Addr: public IRemoteAddr { + public: inline TIPv4Addr(const TIpAddress& addr) noexcept - : A_(addr) - { - } - + : A_(addr) + { + } + const sockaddr* Addr() const override { - return A_; - } - + return A_; + } + socklen_t Len() const override { - return A_; - } - - private: + return A_; + } + + private: const TIpAddress A_; - }; - - //same, for ipv6 addresses - class TIPv6Addr: public IRemoteAddr { - public: + }; + + //same, for ipv6 addresses + class TIPv6Addr: public IRemoteAddr { + public: inline TIPv6Addr(const sockaddr_in6& a) noexcept - : A_(a) - { - } - + : A_(a) + { + } + const sockaddr* Addr() const override { - return (sockaddr*)&A_; - } - + return (sockaddr*)&A_; + } + socklen_t Len() const override { - return sizeof(A_); - } - - private: + return sizeof(A_); + } + + private: const sockaddr_in6 A_; - }; -} + }; +} |