added qse_skadrealsize() && SocketAddress::getAddrRealSize()

This commit is contained in:
2020-09-08 10:23:51 +00:00
parent b7f4bf85b6
commit c8144cc4b4
4 changed files with 59 additions and 1 deletions

View File

@ -104,6 +104,14 @@ SocketAddress::SocketAddress (const qse_nwad_t* nwad) QSE_CPP_NOEXCEPT
this->set (nwad);
}
bool SocketAddress::operator== (const SocketAddress& addr) const QSE_CPP_NOEXCEPT
{
if (this == &addr) return true;
if (FAMILY(&this->skad) != FAMILY(&addr.skad)) return false;
if (this->getAddrRealSize() != addr.getAddrRealSize()) return false;
return QSE_MEMCMP(this->getAddrPtr(), addr.getAddrPtr(), addr.getAddrRealSize()) == 0;
}
int SocketAddress::getFamily () const QSE_CPP_NOEXCEPT
{
return FAMILY(&this->skad);

View File

@ -287,3 +287,34 @@ int qse_skadsize (const qse_skad_t* skad)
return 0;
}
int qse_skadrealsize (const qse_skad_t* skad)
{
sockaddr_t* sa = (sockaddr_t*)skad;
QSE_ASSERT (QSE_SIZEOF(*skad) >= QSE_SIZEOF(*sa));
switch (FAMILY(skad))
{
#if defined(AF_INET)
case AF_INET: return QSE_SIZEOF(sa->in4);
#endif
#if defined(AF_INET6)
case AF_INET6: return QSE_SIZEOF(sa->in6);
#endif
#if defined(AF_UNIX)
case AF_UNIX:
{
return QSE_OFFSETOF(struct sockaddr_un, sun_path) + qse_mbslen(sa->un.sun_path);
}
#endif
#if defined(AF_PACKET)
case AF_PACKET: return QSE_SIZEOF(sa->ll);
#endif
}
return 0;
}