diff --git a/include/ascs/base.h b/include/ascs/base.h index a06018d351cadf62347fd9dc536451081684d2a1..78ef0622efc3522ba95244548f9d988bac9b49dd 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 9ec6d9acc391135bc4190f8379d8e95bc4884318..bf03a8ec9766f5a70f07e802d4097806e3c41280 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 e372e3f4aab63918b4cc4fbb7811519a4927cc49..de4c655b055da9f806aeb157e28db847d9693de4 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;}