From 191c9d56e76debfdb6575a087cc83f5ce2fc46ad Mon Sep 17 00:00:00 2001 From: youngwolf Date: Sat, 23 Nov 2019 16:11:37 +0800 Subject: [PATCH] Make the link status available via tcp::socket_base::get_link_status(). send_msg (series) support char[] as the input source. --- include/ascs/base.h | 8 ++++++++ include/ascs/config.h | 2 ++ include/ascs/tcp/socket.h | 1 + 3 files changed, 11 insertions(+) diff --git a/include/ascs/base.h b/include/ascs/base.h index a06018d..78ef062 100644 --- a/include/ascs/base.h +++ b/include/ascs/base.h @@ -587,6 +587,7 @@ template void NAME(const _Predicate& __pred) const {for (au //TCP msg sending interface #define TCP_SEND_MSG_CALL_SWITCH(FUNNAME, TYPE) \ TYPE FUNNAME(const char* pstr, size_t len, bool can_overflow = false) {return FUNNAME(&pstr, &len, 1, can_overflow);} \ +TYPE FUNNAME(char* pstr, size_t len, bool can_overflow = false) {return FUNNAME(&pstr, &len, 1, can_overflow);} \ template TYPE FUNNAME(const Buffer& buffer, bool can_overflow = false) {return FUNNAME(buffer.data(), buffer.size(), can_overflow);} #define TCP_SEND_MSG(FUNNAME, NATIVE) \ @@ -662,6 +663,7 @@ TCP_SEND_MSG_CALL_SWITCH(FUNNAME, void) //TCP sync msg sending interface #define TCP_SYNC_SEND_MSG_CALL_SWITCH(FUNNAME, TYPE) \ TYPE FUNNAME(const char* pstr, size_t len, unsigned duration = 0, bool can_overflow = false) {return FUNNAME(&pstr, &len, 1, duration, can_overflow);} \ +TYPE FUNNAME(char* pstr, size_t len, unsigned duration = 0, bool can_overflow = false) {return FUNNAME(&pstr, &len, 1, duration, can_overflow);} \ template TYPE FUNNAME(const Buffer& buffer, unsigned duration = 0, bool can_overflow = false) \ {return FUNNAME(buffer.data(), buffer.size(), duration, can_overflow);} @@ -741,8 +743,11 @@ TCP_SYNC_SEND_MSG_CALL_SWITCH(FUNNAME, sync_call_result) //UDP msg sending interface #define UDP_SEND_MSG_CALL_SWITCH(FUNNAME, TYPE) \ TYPE FUNNAME(const char* pstr, size_t len, bool can_overflow = false) {return FUNNAME(peer_addr, pstr, len, can_overflow);} \ +TYPE FUNNAME(char* pstr, size_t len, bool can_overflow = false) {return FUNNAME(peer_addr, pstr, len, can_overflow);} \ TYPE FUNNAME(const asio::ip::udp::endpoint& peer_addr, const char* pstr, size_t len, bool can_overflow = false) \ {return FUNNAME(peer_addr, &pstr, &len, 1, can_overflow);} \ +TYPE FUNNAME(const asio::ip::udp::endpoint& peer_addr, char* pstr, size_t len, bool can_overflow = false) \ + {return FUNNAME(peer_addr, &pstr, &len, 1, can_overflow);} \ template TYPE FUNNAME(const Buffer& buffer, bool can_overflow = false) {return FUNNAME(peer_addr, buffer, can_overflow);} \ template TYPE FUNNAME(const asio::ip::udp::endpoint& peer_addr, const Buffer& buffer, bool can_overflow = false) \ {return FUNNAME(peer_addr, buffer.data(), buffer.size(), can_overflow);} @@ -773,8 +778,11 @@ UDP_SEND_MSG_CALL_SWITCH(FUNNAME, bool) //UDP sync msg sending interface #define UDP_SYNC_SEND_MSG_CALL_SWITCH(FUNNAME, TYPE) \ TYPE FUNNAME(const char* pstr, size_t len, unsigned duration = 0, bool can_overflow = false) {return FUNNAME(peer_addr, pstr, len, duration, can_overflow);} \ +TYPE FUNNAME(char* pstr, size_t len, unsigned duration = 0, bool can_overflow = false) {return FUNNAME(peer_addr, pstr, len, duration, can_overflow);} \ TYPE FUNNAME(const asio::ip::udp::endpoint& peer_addr, const char* pstr, size_t len, unsigned duration = 0, bool can_overflow = false) \ {return FUNNAME(peer_addr, &pstr, &len, 1, duration, can_overflow);} \ +TYPE FUNNAME(const asio::ip::udp::endpoint& peer_addr, char* pstr, size_t len, unsigned duration = 0, bool can_overflow = false) \ + {return FUNNAME(peer_addr, &pstr, &len, 1, duration, can_overflow);} \ template TYPE FUNNAME(const Buffer& buffer, unsigned duration = 0, bool can_overflow = false) {return FUNNAME(peer_addr, buffer, duration, can_overflow);} \ template TYPE FUNNAME(const asio::ip::udp::endpoint& peer_addr, const Buffer& buffer, unsigned duration = 0, bool can_overflow = false) \ {return FUNNAME(peer_addr, buffer.data(), buffer.size(), duration, can_overflow);} diff --git a/include/ascs/config.h b/include/ascs/config.h index 9ec6d9a..bf03a8e 100644 --- a/include/ascs/config.h +++ b/include/ascs/config.h @@ -614,6 +614,8 @@ * virtual size_t raw_data_len(msg_ctype& msg) const * Prefix the socket id (generated by ascs) for all logs. * Prefix thread id for all logs. + * Make the link status available via tcp::socket_base::get_link_status(). + * send_msg (series) support char[] as the input source. * * DELETION: * Delete file mingw-build.bat, use mingw32-make instead. diff --git a/include/ascs/tcp/socket.h b/include/ascs/tcp/socket.h index e372e3f..de4c655 100644 --- a/include/ascs/tcp/socket.h +++ b/include/ascs/tcp/socket.h @@ -59,6 +59,7 @@ public: virtual void reset() {status = link_status::BROKEN; sending_msgs.clear(); super::reset();} //SOCKET status + link_status get_link_status() const {return status;} bool is_broken() const {return link_status::BROKEN == status;} bool is_connected() const {return link_status::CONNECTED == status;} bool is_shutting_down() const {return link_status::FORCE_SHUTTING_DOWN == status || link_status::GRACEFUL_SHUTTING_DOWN == status;} -- GitLab