added qse_skadrealsize() && SocketAddress::getAddrRealSize()
This commit is contained in:
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user