From 04ede03b3763953ca6c14c15425964bf2daaff00 Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Mon, 10 Aug 2020 16:55:58 +0000 Subject: [PATCH] added Sttp::sendCmdV() --- qse/include/qse/sttp/Sttp.hpp | 5 ++ qse/lib/si/mtx.c | 5 +- qse/lib/sttp/Sttp.cpp | 106 ++++++++++++++++++++-------------- 3 files changed, 69 insertions(+), 47 deletions(-) diff --git a/qse/include/qse/sttp/Sttp.hpp b/qse/include/qse/sttp/Sttp.hpp index 1220b4ca..247a0025 100644 --- a/qse/include/qse/sttp/Sttp.hpp +++ b/qse/include/qse/sttp/Sttp.hpp @@ -32,6 +32,7 @@ #include #include #include +#include QSE_BEGIN_NAMESPACE(QSE) @@ -59,6 +60,10 @@ public: int sendCmdL (const qse_mchar_t* name, qse_size_t nargs, ...); int sendCmdL (const qse_wchar_t* name, qse_size_t nargs, ...); + int sendCmdV (const qse_mchar_t* name, qse_size_t nargs, va_list ap); + int sendCmdV (const qse_wchar_t* name, qse_size_t nargs, va_list ap); + // TODO: sendCmdLV + // ------------------------------------------------------------------ virtual int handle_command (const SttpCmd& cmd) diff --git a/qse/lib/si/mtx.c b/qse/lib/si/mtx.c index 864f3aea..0c4a9af8 100644 --- a/qse/lib/si/mtx.c +++ b/qse/lib/si/mtx.c @@ -118,7 +118,7 @@ int qse_mtx_init (qse_mtx_t* mtx, qse_mmgr_t* mmgr) qse_ensure (pthread_mutex_init (&mtx->hnd, &attr) == 0); qse_ensure (pthread_mutexattr_destroy (&attr) == 0); */ - if (pthread_mutex_init ((pthread_mutex_t*)&mtx->hnd, QSE_NULL) != 0) return -1; + if (pthread_mutex_init((pthread_mutex_t*)&mtx->hnd, QSE_NULL) != 0) return -1; #endif return 0; @@ -229,8 +229,7 @@ int qse_mtx_lock (qse_mtx_t* mtx, const qse_ntime_t* waiting_time) else { #endif - if (pthread_mutex_lock ((pthread_mutex_t*)&mtx->hnd) != 0) return -1; - + if (pthread_mutex_lock((pthread_mutex_t*)&mtx->hnd) != 0) return -1; #if defined(HAVE_PTHREAD_MUTEX_TIMEDLOCK) } #endif diff --git a/qse/lib/sttp/Sttp.cpp b/qse/lib/sttp/Sttp.cpp index ba83d722..a938cf99 100644 --- a/qse/lib/sttp/Sttp.cpp +++ b/qse/lib/sttp/Sttp.cpp @@ -679,59 +679,32 @@ int Sttp::write_char (qse_wchar_t c) return 0; } -int Sttp::sendCmd (const qse_mchar_t* name, qse_size_t nargs = 0, ...) + +int Sttp::sendCmd (const qse_mchar_t* name, qse_size_t nargs, ...) { - if (name[0] == '\0') return 0; // don't send a null command - if (this->beginWrite(name) <= -1) return -1; + int n; - if (nargs > 0) - { - va_list ap; - va_start (ap, nargs); + va_list ap; + va_start (ap, nargs); + n = this->sendCmd(name, nargs, ap); + va_end (ap); - for (qse_size_t i = 1; i <= nargs; i++) - { - qse_mchar_t* p = va_arg(ap, qse_mchar_t*); - if (this->writeStringArg(p) <= -1) - { - va_end (ap); - return -1; - } - } - va_end (ap); - } - - if (this->endWrite() <= -1) return -1; - return 0; + return n; } -int Sttp::sendCmd (const qse_wchar_t* name, qse_size_t nargs = 0, ...) +int Sttp::sendCmd (const qse_wchar_t* name, qse_size_t nargs, ...) { - if (name[0] == '\0') return 0; // don't send a null command - if (this->beginWrite(name) <= -1) return -1; + int n; - if (nargs > 0) - { - va_list ap; - va_start (ap, nargs); + va_list ap; + va_start (ap, nargs); + n = this->sendCmd(name, nargs, ap); + va_end (ap); - for (qse_size_t i = 1; i <= nargs; i++) - { - qse_wchar_t* p = va_arg(ap, qse_wchar_t*); - if (this->writeStringArg(p) <= -1) - { - va_end (ap); - return -1; - } - } - va_end (ap); - } - - if (this->endWrite() <= -1) return -1; - return 0; + return n; } -int Sttp::sendCmdL (const qse_mchar_t* name, qse_size_t nargs = 0, ...) +int Sttp::sendCmdL (const qse_mchar_t* name, qse_size_t nargs, ...) { if (name[0] == '\0') return 0; // don't send a null command if (this->beginWrite(name) <= -1) return -1; @@ -758,7 +731,7 @@ int Sttp::sendCmdL (const qse_mchar_t* name, qse_size_t nargs = 0, ...) return 0; } -int Sttp::sendCmdL (const qse_wchar_t* name, qse_size_t nargs = 0, ...) +int Sttp::sendCmdL (const qse_wchar_t* name, qse_size_t nargs, ...) { if (name[0] == '\0') return 0; // don't send a null command if (this->beginWrite(name) <= -1) return -1; @@ -785,4 +758,49 @@ int Sttp::sendCmdL (const qse_wchar_t* name, qse_size_t nargs = 0, ...) return 0; } +int Sttp::sendCmdV (const qse_mchar_t* name, qse_size_t nargs, va_list ap) +{ + if (name[0] == '\0') return 0; // don't send a null command + if (this->beginWrite(name) <= -1) return -1; + + if (nargs > 0) + { + for (qse_size_t i = 1; i <= nargs; i++) + { + qse_mchar_t* p = va_arg(ap, qse_mchar_t*); + if (this->writeStringArg(p) <= -1) + { + va_end (ap); + return -1; + } + } + } + + if (this->endWrite() <= -1) return -1; + return 0; +} + +int Sttp::sendCmdV (const qse_wchar_t* name, qse_size_t nargs, va_list ap) +{ + if (name[0] == '\0') return 0; // don't send a null command + if (this->beginWrite(name) <= -1) return -1; + + if (nargs > 0) + { + for (qse_size_t i = 1; i <= nargs; i++) + { + qse_wchar_t* p = va_arg(ap, qse_wchar_t*); + if (this->writeStringArg(p) <= -1) + { + va_end (ap); + return -1; + } + } + } + + if (this->endWrite() <= -1) return -1; + return 0; +} + + QSE_END_NAMESPACE(QSE)