added IFNAMSIZ check in configure.ac
added QSE::SocketAddress::toString() added QSE::Socket::getSendBuf(), QSE::Socket::getRecvBuf()
This commit is contained in:
parent
24d8c70835
commit
5829f8a28d
73
qse/configure
vendored
73
qse/configure
vendored
@ -23113,6 +23113,64 @@ _ACEOF
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking numeric value of IFNAMSIZ" >&5
|
||||
$as_echo_n "checking numeric value of IFNAMSIZ... " >&6; }
|
||||
if ${ax_cv_numvalof_IFNAMSIZ+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
if ac_fn_c_compute_int "$LINENO" "(IFNAMSIZ)" "ax_cv_numvalof_IFNAMSIZ" "#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <net/if.h>
|
||||
"; then :
|
||||
|
||||
else
|
||||
ax_cv_numvalof_IFNAMSIZ=-1
|
||||
fi
|
||||
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_numvalof_IFNAMSIZ" >&5
|
||||
$as_echo "$ax_cv_numvalof_IFNAMSIZ" >&6; }
|
||||
|
||||
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define NUMVALOF_IFNAMSIZ $ax_cv_numvalof_IFNAMSIZ
|
||||
_ACEOF
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking numeric value of IF_NAMESIZE" >&5
|
||||
$as_echo_n "checking numeric value of IF_NAMESIZE... " >&6; }
|
||||
if ${ax_cv_numvalof_IF_NAMESIZE+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
if ac_fn_c_compute_int "$LINENO" "(IF_NAMESIZE)" "ax_cv_numvalof_IF_NAMESIZE" "#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <net/if.h>
|
||||
"; then :
|
||||
|
||||
else
|
||||
ax_cv_numvalof_IF_NAMESIZE=-1
|
||||
fi
|
||||
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_numvalof_IF_NAMESIZE" >&5
|
||||
$as_echo "$ax_cv_numvalof_IF_NAMESIZE" >&6; }
|
||||
|
||||
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define NUMVALOF_IF_NAMESIZE $ax_cv_numvalof_IF_NAMESIZE
|
||||
_ACEOF
|
||||
|
||||
|
||||
|
||||
|
||||
if test "x${platform_win32}" = "xyes"
|
||||
then
|
||||
# The cast to long int works around a bug in the HP C Compiler
|
||||
@ -24478,6 +24536,21 @@ cat >>confdefs.h <<_ACEOF
|
||||
#define QSE_AF_UNIX ${ax_cv_numvalof_AF_UNIX}
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
if test ${ax_cv_numvalof_IFNAMSIZ} -ge 0
|
||||
then
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define QSE_IF_NAMESIZE ${ax_cv_numvalof_IFNAMSIZ}
|
||||
_ACEOF
|
||||
|
||||
elif test ${ax_cv_numvalof_IF_NAMESIZE} -ge 0
|
||||
then
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define QSE_IF_NAMESIZE ${ax_cv_numvalof_IF_NAMESIZE}
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
|
||||
|
||||
|
@ -551,6 +551,12 @@ AX_CHECK_NUMVALOF(AF_PACKET, [-1], [#include <sys/types.h>
|
||||
AX_CHECK_NUMVALOF(AF_UNIX, [-1], [#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/un.h>])
|
||||
AX_CHECK_NUMVALOF(IFNAMSIZ, [-1], [#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <net/if.h>])
|
||||
AX_CHECK_NUMVALOF(IF_NAMESIZE, [-1], [#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <net/if.h>])
|
||||
|
||||
if test "x${platform_win32}" = "xyes"
|
||||
then
|
||||
@ -851,6 +857,13 @@ if test ${ax_cv_numvalof_AF_UNIX} -ge 0
|
||||
then
|
||||
AC_DEFINE_UNQUOTED(QSE_AF_UNIX, ${ax_cv_numvalof_AF_UNIX}, [AF_UNIX])
|
||||
fi
|
||||
if test ${ax_cv_numvalof_IFNAMSIZ} -ge 0
|
||||
then
|
||||
AC_DEFINE_UNQUOTED(QSE_IF_NAMESIZE, ${ax_cv_numvalof_IFNAMSIZ}, [IF_NAMESIZE])
|
||||
elif test ${ax_cv_numvalof_IF_NAMESIZE} -ge 0
|
||||
then
|
||||
AC_DEFINE_UNQUOTED(QSE_IF_NAMESIZE, ${ax_cv_numvalof_IF_NAMESIZE}, [IF_NAMESIZE])
|
||||
fi
|
||||
|
||||
AC_DEFINE_UNQUOTED(QSE_SIZEOF_STRUCT_SOCKADDR_IN, ${ac_cv_sizeof_struct_sockaddr_in}, [sizeof(struct sockaddr_in)])
|
||||
AC_DEFINE_UNQUOTED(QSE_SIZEOF_STRUCT_SOCKADDR_IN6, ${ac_cv_sizeof_struct_sockaddr_in6}, [sizeof(struct sockaddr_in6)])
|
||||
|
@ -73,10 +73,10 @@
|
||||
(QSE_IS_LEAPYEAR(year)? QSE_DAYS_PER_LEAPYEAR: QSE_DAYS_PER_NORMYEAR)
|
||||
|
||||
#define QSE_SECNSEC_TO_MSEC(sec,nsec) \
|
||||
(((qse_long_t)(sec) * QSE_MSECS_PER_SEC) + ((qse_long_t)(nsec) / QSE_NSECS_PER_MSEC))
|
||||
(((qse_ntime_sec_t)(sec) * QSE_MSECS_PER_SEC) + ((qse_ntime_sec_t)(nsec) / QSE_NSECS_PER_MSEC))
|
||||
|
||||
#define QSE_SECNSEC_TO_USEC(sec,nsec) \
|
||||
(((qse_long_t)(sec) * QSE_USECS_PER_SEC) + ((qse_long_t)(nsec) / QSE_NSECS_PER_USEC))
|
||||
(((qse_ntime_sec_t)(sec) * QSE_USECS_PER_SEC) + ((qse_ntime_sec_t)(nsec) / QSE_NSECS_PER_USEC))
|
||||
|
||||
#define QSE_SEC_TO_MSEC(sec) ((sec) * QSE_MSECS_PER_SEC)
|
||||
#define QSE_MSEC_TO_SEC(sec) ((sec) / QSE_MSECS_PER_SEC)
|
||||
@ -93,6 +93,9 @@
|
||||
#define QSE_SEC_TO_USEC(sec) ((sec) * QSE_USECS_PER_SEC)
|
||||
#define QSE_USEC_TO_SEC(usec) ((usec) / QSE_USECS_PER_SEC)
|
||||
|
||||
typedef qse_long_t qse_ntime_sec_t;
|
||||
typedef qse_int32_t qse_ntime_nsec_t;
|
||||
|
||||
/**
|
||||
* The qse_ntime_t type defines a numeric time type expressed in the
|
||||
* number of milliseconds since the Epoch (00:00:00 UTC, Jan 1, 1970).
|
||||
@ -100,8 +103,8 @@
|
||||
typedef struct qse_ntime_t qse_ntime_t;
|
||||
struct qse_ntime_t
|
||||
{
|
||||
qse_long_t sec;
|
||||
qse_int32_t nsec; /* nanoseconds */
|
||||
qse_ntime_sec_t sec;
|
||||
qse_ntime_nsec_t nsec; /* nanoseconds */
|
||||
};
|
||||
|
||||
typedef struct qse_btime_t qse_btime_t;
|
||||
@ -123,7 +126,7 @@ struct qse_btime_t
|
||||
typedef qse_long_t qse_mtime_t;
|
||||
|
||||
#if defined(QSE_HAVE_INLINE)
|
||||
static QSE_INLINE void qse_inittime(qse_ntime_t* x, qse_long_t s, qse_int32_t nsec)
|
||||
static QSE_INLINE void qse_inittime(qse_ntime_t* x, qse_ntime_sec_t s, qse_ntime_nsec_t nsec)
|
||||
{
|
||||
x->sec = s;
|
||||
x->nsec = nsec;
|
||||
|
@ -810,6 +810,12 @@
|
||||
/* The size of `AF_UNIX', as computed by valueof. */
|
||||
#undef NUMVALOF_AF_UNIX
|
||||
|
||||
/* The size of `IFNAMSIZ', as computed by valueof. */
|
||||
#undef NUMVALOF_IFNAMSIZ
|
||||
|
||||
/* The size of `IF_NAMESIZE', as computed by valueof. */
|
||||
#undef NUMVALOF_IF_NAMESIZE
|
||||
|
||||
/* The size of `MB_LEN_MAX', as computed by valueof. */
|
||||
#undef NUMVALOF_MB_LEN_MAX
|
||||
|
||||
@ -898,6 +904,9 @@
|
||||
/* char16_t literal prefix */
|
||||
#undef QSE_HAVE_PREFIX_SMALL_U
|
||||
|
||||
/* IF_NAMESIZE */
|
||||
#undef QSE_IF_NAMESIZE
|
||||
|
||||
/* MB_LEN_MAX */
|
||||
#undef QSE_MBLEN_MAX
|
||||
|
||||
|
@ -54,6 +54,7 @@ public:
|
||||
int open (int domain, int type, int protocol, int traits = 0) QSE_CPP_NOEXCEPT;
|
||||
void close () QSE_CPP_NOEXCEPT;
|
||||
|
||||
int getDomain () const QSE_CPP_NOEXCEPT { return this->domain; }
|
||||
qse_sck_hnd_t getHandle() const QSE_CPP_NOEXCEPT { return this->handle; }
|
||||
bool isOpen() const QSE_CPP_NOEXCEPT { return this->handle != QSE_INVALID_SCKHND; }
|
||||
|
||||
@ -65,6 +66,10 @@ public:
|
||||
int getOption (int level, int optname, void* optval, qse_sck_len_t* optlen) QSE_CPP_NOEXCEPT;
|
||||
int setOption (int level, int optname, const void* optval, qse_sck_len_t optlen) QSE_CPP_NOEXCEPT;
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
int getSendBuf (unsigned int& n) QSE_CPP_NOEXCEPT;
|
||||
int getRecvBuf (unsigned int& n) QSE_CPP_NOEXCEPT;
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
int setDebug (int n) QSE_CPP_NOEXCEPT;
|
||||
int setReuseAddr (int n) QSE_CPP_NOEXCEPT;
|
||||
|
@ -29,6 +29,7 @@
|
||||
|
||||
#include <qse/Types.hpp>
|
||||
#include <qse/si/nwad.h>
|
||||
#include <qse/cmn/String.hpp>
|
||||
|
||||
/////////////////////////////////
|
||||
QSE_BEGIN_NAMESPACE(QSE)
|
||||
@ -87,6 +88,10 @@ public:
|
||||
qse_mchar_t* toStrBuf (qse_mchar_t* buf, qse_size_t len) const QSE_CPP_NOEXCEPT;
|
||||
qse_wchar_t* toStrBuf (qse_wchar_t* buf, qse_size_t len) const QSE_CPP_NOEXCEPT;
|
||||
|
||||
QSE::MbString toMbString (QSE::Mmgr* mmgr = QSE_NULL) const;
|
||||
QSE::WcString toWcString (QSE::Mmgr* mmgr = QSE_NULL) const;
|
||||
QSE::String toString (QSE::Mmgr* mmgr = QSE_NULL) const;
|
||||
|
||||
static qse_mchar_t* ip4addrToStrBuf (const qse_ip4ad_t* ipaddr, qse_mchar_t* buf, qse_size_t len);
|
||||
static qse_mchar_t* ip4addrToStrBuf (qse_uint32_t ipaddr, qse_mchar_t* buf, qse_size_t len);
|
||||
static qse_mchar_t* ip6addrToStrBuf (const qse_ip6ad_t* ipaddr, qse_mchar_t* buf, qse_size_t len);
|
||||
|
@ -187,6 +187,18 @@ int Socket::setOption (int level, int optname, const void* optval, qse_sck_len_t
|
||||
return n;
|
||||
}
|
||||
|
||||
int Socket::getSendBuf (unsigned int& size) QSE_CPP_NOEXCEPT
|
||||
{
|
||||
qse_sck_len_t optlen = QSE_SIZEOF(size);
|
||||
return this->getOption(SOL_SOCKET, SO_SNDBUF, (char*)&size, &optlen);
|
||||
}
|
||||
|
||||
int Socket::getRecvBuf (unsigned int& size) QSE_CPP_NOEXCEPT
|
||||
{
|
||||
qse_sck_len_t optlen = QSE_SIZEOF(size);
|
||||
return this->getOption(SOL_SOCKET, SO_RCVBUF, (char*)&size, &optlen);
|
||||
}
|
||||
|
||||
int Socket::setDebug (int n) QSE_CPP_NOEXCEPT
|
||||
{
|
||||
return this->setOption(SOL_SOCKET, SO_DEBUG, (char*)&n, QSE_SIZEOF(n));
|
||||
|
@ -300,6 +300,36 @@ qse_mchar_t* SocketAddress::toStrBuf (qse_mchar_t* buf, qse_size_t len) const QS
|
||||
return buf;
|
||||
}
|
||||
|
||||
QSE::MbString SocketAddress::toMbString (QSE::Mmgr* mmgr) const
|
||||
{
|
||||
QSE::MbString buf(256, mmgr);
|
||||
qse_nwad_t nwad;
|
||||
qse_skadtonwad (&this->skad, &nwad);
|
||||
qse_size_t n = qse_nwadtombs(&nwad, (qse_mchar_t*)buf.getBuffer(), buf.getCapacity(), QSE_NWADTOMBS_ALL);
|
||||
buf.truncate (n);
|
||||
return buf;
|
||||
}
|
||||
|
||||
QSE::WcString SocketAddress::toWcString (QSE::Mmgr* mmgr) const
|
||||
{
|
||||
QSE::WcString buf(256, mmgr);
|
||||
qse_nwad_t nwad;
|
||||
qse_skadtonwad (&this->skad, &nwad);
|
||||
qse_size_t n = qse_nwadtowcs(&nwad, (qse_wchar_t*)buf.getBuffer(), buf.getCapacity(), QSE_NWADTOWCS_ALL);
|
||||
buf.truncate (n);
|
||||
return buf;
|
||||
}
|
||||
|
||||
QSE::String SocketAddress::toString (QSE::Mmgr* mmgr) const
|
||||
{
|
||||
QSE::String buf(256, mmgr);
|
||||
qse_nwad_t nwad;
|
||||
qse_skadtonwad (&this->skad, &nwad);
|
||||
qse_size_t n = qse_nwadtostr(&nwad, (qse_char_t*)buf.getBuffer(), buf.getCapacity(), QSE_NWADTOSTR_ALL);
|
||||
buf.truncate (n);
|
||||
return buf;
|
||||
}
|
||||
|
||||
qse_mchar_t* SocketAddress::ip4addrToStrBuf (const qse_ip4ad_t* ipaddr, qse_mchar_t* buf, qse_size_t len)
|
||||
{
|
||||
qse_nwad_t nwad;
|
||||
|
@ -16,7 +16,6 @@ static int test1 ()
|
||||
{
|
||||
QSE::Socket s;
|
||||
QSE::SocketAddress addr;
|
||||
qse_ioptl_t k[3];
|
||||
|
||||
if (s.open (QSE_AF_INET6, QSE_SOCK_STREAM, 0) <= -1)
|
||||
{
|
||||
@ -61,15 +60,21 @@ static int test1 ()
|
||||
|
||||
|
||||
addr.set ("[::1]:9999");
|
||||
s.connect (addr);
|
||||
|
||||
k[0].ptr = (void*)"hello";
|
||||
k[0].len = 5;
|
||||
k[1].ptr = (void*)"world";
|
||||
k[1].len = 5;
|
||||
k[2].ptr = (void*)"forever";
|
||||
k[2].len = 7;
|
||||
s.sendx (k, 3);
|
||||
if (s.connect(addr) <= -1)
|
||||
{
|
||||
qse_printf (QSE_T("unable to connect to [::1]:9999\n"));
|
||||
}
|
||||
else
|
||||
{
|
||||
qse_ioptl_t k[3];
|
||||
k[0].ptr = (void*)"hello";
|
||||
k[0].len = 5;
|
||||
k[1].ptr = (void*)"world";
|
||||
k[1].len = 5;
|
||||
k[2].ptr = (void*)"forever";
|
||||
k[2].len = 7;
|
||||
s.sendx (k, 3);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user