|
@ -28,7 +28,8 @@ class XSUDP : public I_XSUDP { |
|
|
virtual xs_error_code_t sendto(const XsyncNetAdd& to, const char* data, int32_t length, int32_t* sendlength) override; |
|
|
virtual xs_error_code_t sendto(const XsyncNetAdd& to, const char* data, int32_t length, int32_t* sendlength) override; |
|
|
virtual xs_error_code_t receive(char* data, int32_t& length, XsyncNetAdd& from, int overtimems) override; |
|
|
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 startReceive(onMessage_t onMessage) override; |
|
|
; |
|
|
|
|
|
|
|
|
virtual xs_error_code_t stopReceive() override; |
|
|
|
|
|
virtual ~XSUDP(); |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
const char* fmtip(uint32_t ip) { |
|
|
const char* fmtip(uint32_t ip) { |
|
@ -94,6 +95,10 @@ xs_error_code_t XSUDP::receive(char* data, int32_t& length, XsyncNetAdd& from, i |
|
|
|
|
|
|
|
|
xs_error_code_t XSUDP::startReceive(onMessage_t onMessage) { |
|
|
xs_error_code_t XSUDP::startReceive(onMessage_t onMessage) { |
|
|
m_onMessage = onMessage; |
|
|
m_onMessage = onMessage; |
|
|
|
|
|
|
|
|
|
|
|
if (m_zq_thread) { |
|
|
|
|
|
return kxs_ec_success; |
|
|
|
|
|
} |
|
|
m_rxbuf = (char*)malloc(10240); |
|
|
m_rxbuf = (char*)malloc(10240); |
|
|
m_rxbufsize = 10240; |
|
|
m_rxbufsize = 10240; |
|
|
|
|
|
|
|
@ -111,6 +116,28 @@ xs_error_code_t XSUDP::startReceive(onMessage_t onMessage) { |
|
|
m_zq_thread->start(); |
|
|
m_zq_thread->start(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
xs_error_code_t XSUDP::stopReceive() { |
|
|
|
|
|
if (m_zq_thread) { |
|
|
|
|
|
m_zq_thread->quit(); |
|
|
|
|
|
m_zq_thread->wait(); |
|
|
|
|
|
m_zq_thread.reset(nullptr); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (!m_rxbuf) { |
|
|
|
|
|
free(m_rxbuf); |
|
|
|
|
|
m_rxbuf = nullptr; |
|
|
|
|
|
m_rxbufsize = 0; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
XSUDP::~XSUDP() { |
|
|
|
|
|
stopReceive(); |
|
|
|
|
|
|
|
|
|
|
|
if (m_sock_fd > 0) { |
|
|
|
|
|
closesocket(m_sock_fd); |
|
|
|
|
|
m_sock_fd = -1; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
/*******************************************************************************
|
|
|
/*******************************************************************************
|
|
|
* xSyncUdpFactoryImpl * |
|
|
* xSyncUdpFactoryImpl * |
|
|
*******************************************************************************/ |
|
|
*******************************************************************************/ |
|
|