From 50747c88b33bcf5ddcf3f7386174c7e559afba3d Mon Sep 17 00:00:00 2001 From: zhaohe Date: Thu, 4 Jan 2024 22:22:36 +0800 Subject: [PATCH] update --- libxsync | 2 +- src/logger.hpp | 3 ++- src/xsync_udp_factory_impl.cpp | 19 +++++++++++++++++-- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/libxsync b/libxsync index c9dc057..f3d9fc1 160000 --- a/libxsync +++ b/libxsync @@ -1 +1 @@ -Subproject commit c9dc057143720efe76a21368ded925a2a0314288 +Subproject commit f3d9fc167d1c8b30e9dba173ee81daddd3707b40 diff --git a/src/logger.hpp b/src/logger.hpp index 84bff8c..b7bac68 100644 --- a/src/logger.hpp +++ b/src/logger.hpp @@ -13,4 +13,5 @@ int32_t zos_get_ticket(); if (!(cond)) { \ ZLOGE("ASSERT", "condition: %s", #cond); \ exit(-1); \ - } \ No newline at end of file + } + diff --git a/src/xsync_udp_factory_impl.cpp b/src/xsync_udp_factory_impl.cpp index e01ceb6..b10ed38 100644 --- a/src/xsync_udp_factory_impl.cpp +++ b/src/xsync_udp_factory_impl.cpp @@ -29,6 +29,7 @@ class XSUDP : public I_XSUDP { virtual xs_error_code_t receive(char* data, int32_t& length, XsyncNetAdd& from, int overtimems) override; virtual xs_error_code_t startReceive(onMessage_t onMessage) override; virtual xs_error_code_t stopReceive() override; + virtual xs_error_code_t clearRxBuffer() override; virtual ~XSUDP(); }; @@ -68,8 +69,8 @@ xs_error_code_t XSUDP::receive(char* data, int32_t& length, XsyncNetAdd& from, i struct sockaddr_in sockaddr = {0}; timeval timeout; - timeout.tv_sec = overtimems; - timeout.tv_usec = 0; + timeout.tv_sec = overtimems / 1000; + timeout.tv_usec = overtimems % 1000 * 1000; if (setsockopt(m_sock_fd, SOL_SOCKET, SO_RCVTIMEO, (const char*)&timeout, sizeof(timeout)) == -1) { return kxs_ec_setsockopt_rx_timeout_fail; } @@ -129,6 +130,20 @@ xs_error_code_t XSUDP::stopReceive() { m_rxbufsize = 0; } } + +xs_error_code_t XSUDP::clearRxBuffer() { + char buf[1024]; + int32_t length = 1024; + XsyncNetAdd from; + xs_error_code_t ret = kxs_ec_success; + + while (ret == kxs_ec_success) { + ret = receive(buf, length, from, 1); + } + + return kxs_ec_success; +} + XSUDP::~XSUDP() { stopReceive();