Fix the service query fail issue.
| | |
| | | char data_buf[MAX_STR_LEN] = { 0x00 }; |
| | | char buf_temp[MAX_STR_LEN] = { 0x00 }; |
| | | char *topics_buf = NULL; |
| | | |
| | | hashtable_t *hashtable = mm_get_hashtable(); |
| | | |
| | | #if defined(PRO_DE_SERIALIZE) |
| | | struct _BHAddress |
| | | { |
| | |
| | | #else |
| | | strncpy(buf_temp, (char *)request, (sizeof(buf_temp) - 1) > strlen((char *)request) ? strlen((char *)request) : (sizeof(buf_temp) - 1)); |
| | | #endif |
| | | |
| | | |
| | | str = buf_temp; |
| | | val = net_mod_socket_buf_data_get(gNetmod_socket, str); |
| | | if(val > 0) { |
| | | |
| | | if ((val > 0) && (hashtable_get(hashtable, val) != NULL)) { |
| | | |
| | | rv = 0; |
| | | |
| | | } else { |
| | | |
| | | if ((val > 0) && (hashtable_get(hashtable, val) == NULL)) { |
| | | net_mod_socket_buf_data_del(gNetmod_socket, str); |
| | | } |
| | | |
| | | rv = net_mod_socket_reg(gNetmod_socket, buf_temp, strlen(buf_temp), &buf, &size, timeout_ms, PROC_QUE_STCS); |
| | | if (rv == 0) { |
| | | |
| | |
| | | char *errString = NULL; |
| | | char buf_temp[MAX_STR_LEN] = { 0x00 }; |
| | | char *topics_buf = NULL; |
| | | |
| | | hashtable_t *hashtable = mm_get_hashtable(); |
| | | |
| | | struct _RequestReply |
| | | { |
| | | std::string proc_id; |
| | |
| | | |
| | | str = buf_temp; |
| | | val = net_mod_socket_buf_data_get(gNetmod_socket, str); |
| | | if(val > 0) { |
| | | if ((val > 0) && (hashtable_get(hashtable, val) != NULL)) { |
| | | rv = 0; |
| | | |
| | | } else { |
| | | if ((val > 0) && (hashtable_get(hashtable, val) == NULL)) { |
| | | net_mod_socket_buf_data_del(gNetmod_socket, str); |
| | | } |
| | | |
| | | rv = net_mod_socket_reg(gNetmod_socket, buf_temp, strlen(buf_temp), &buf, &size, timeout_ms, PROC_QUE_STCS); |
| | | if (rv == 0) { |
| | | |
| | |
| | | return val; |
| | | } |
| | | |
| | | void NetModSocket::buf_data_del(std::string str) { |
| | | recvbuf.erase(str); |
| | | } |
| | | |
| | | void NetModSocket::free_recv_msg_arr(net_mod_recv_msg_t * arr, size_t size) { |
| | | |
| | | for(int i =0; i< size; i++) { |
| | |
| | | |
| | | void buf_data_set(std::string str, int val); |
| | | int buf_data_get(std::string str); |
| | | void buf_data_del(std::string str); |
| | | }; |
| | | |
| | | #endif |
| | | #endif |
| | |
| | | return sockt->buf_data_get(str); |
| | | } |
| | | |
| | | void net_mod_socket_buf_data_del(void * _socket, std::string str) { |
| | | NetModSocket *sockt = (NetModSocket *)_socket; |
| | | sockt->buf_data_del(str); |
| | | } |
| | | |
| | | /** |
| | | * 如果建立连接的节点没有接受到消息等待timeout的时间后返回 |
| | | * @timeout 等待时间,单位是千分之一秒 |
| | |
| | | int net_mod_socket_svr_get(void * _socket); |
| | | void net_mod_socket_buf_data_set(void * _socket, std::string str, int val); |
| | | int net_mod_socket_buf_data_get(void * _socket, std::string str); |
| | | void net_mod_socket_buf_data_del(void * _socket, std::string str); |
| | | |
| | | /** |
| | | * @brief 跨机器发送消息并接受返回的应答消息,直到发送完成才返回 |
| | |
| | | } |
| | | #endif |
| | | |
| | | #endif |
| | | #endif |