Fu Juntang
2021-09-13 0cc00936da93b7003b882c58af01c1345f9cac38
Remove the mutex lock.
1个文件已修改
109 ■■■■■ 已修改文件
src/bh_api.cpp 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/bh_api.cpp
@@ -347,9 +347,6 @@
    return false;
  }
  rv = pthread_mutex_trylock(&mutex);
  if (rv == 0) {
    topics_buf = (char *)malloc(total);
    if (topics_buf == NULL) {
      
@@ -358,8 +355,6 @@
      strncpy(errString, bus_strerror(rv), sizeof(errString));
      
      logger->error("in BHRegisterTopics: Out of memory!\n");
      pthread_mutex_unlock(&mutex);
      return false;
    }
@@ -391,15 +386,6 @@
    strncpy(errString, bus_strerror(rv), sizeof(errString));
    free(topics_buf);
    pthread_mutex_unlock(&mutex);
  } else {
    rv = EBUS_RES_BUSY;
    memset(errString, 0x00, sizeof(errString));
    strncpy(errString, bus_strerror(rv), sizeof(errString));
    return false;
  }
#if defined(PRO_DE_SERIALIZE)
  ::bhome_msg::MsgCommonReply mcr;
@@ -481,9 +467,6 @@
    return false;
  }
  rv = pthread_mutex_trylock(&mutex);
  if (rv == 0) {
#if defined(PRO_DE_SERIALIZE)
    min = (strlen(_input1) > (MAX_STR_LEN - 1) ? (MAX_STR_LEN - 1) : strlen(_input1));
    strncpy(topics_buf, _input1, min);
@@ -496,17 +479,6 @@
   
    memset(errString, 0x00, sizeof(errString));
    strncpy(errString, bus_strerror(rv), sizeof(errString));
    pthread_mutex_unlock(&mutex);
  } else {
    rv = EBUS_RES_BUSY;
    memset(errString, 0x00, sizeof(errString));
    strncpy(errString, bus_strerror(rv), sizeof(errString));
    return false;
  }
    
#if defined(PRO_DE_SERIALIZE)
@@ -632,9 +604,6 @@
    return false;
  }
  rv = pthread_mutex_trylock(&mutex);
  if (rv == 0) {
    if (query != NULL) {
      strncpy(data_buf, (char *)query, (sizeof(data_buf) - 1) > query_len ? query_len : (sizeof(data_buf) - 1));
    }
@@ -643,17 +612,6 @@
    
    memset(errString, 0x00, sizeof(errString));
    strncpy(errString, bus_strerror(rv), sizeof(errString));
    pthread_mutex_unlock(&mutex);
  } else {
    rv = EBUS_RES_BUSY;
    memset(errString, 0x00, sizeof(errString));
    strncpy(errString, bus_strerror(rv), sizeof(errString));
    return false;
  }
  
#if defined(PRO_DE_SERIALIZE)
  struct _MsgQueryProcReply
@@ -800,9 +758,6 @@
    return false;
  }
  rv = pthread_mutex_trylock(&mutex);
  if (rv == 0) {
    topics_buf = (char *)malloc(total);
    if (topics_buf == NULL) {
      
@@ -811,8 +766,6 @@
      strncpy(errString, bus_strerror(rv), sizeof(errString));
      
      logger->error("in BHSubscribeTopics: Out of memory!\n");
      pthread_mutex_unlock(&mutex);
      return false;
    }
@@ -857,16 +810,6 @@
    strncpy(errString, bus_strerror(rv), sizeof(errString));
   
    free(topics_buf);
    pthread_mutex_unlock(&mutex);
  } else {
    rv = EBUS_RES_BUSY;
    memset(errString, 0x00, sizeof(errString));
    strncpy(errString, bus_strerror(rv), sizeof(errString));
    return false;
  }
#if defined(PRO_DE_SERIALIZE)
  ::bhome_msg::MsgCommonReply mcr;
@@ -998,8 +941,6 @@
    return false;
  }
  rv = pthread_mutex_trylock(&mutex);
  if (rv == 0) {
#if defined(PRO_DE_SERIALIZE)
    if (timeout_ms > 0) {
      rv = net_mod_socket_pub_timeout(gNetmod_socket, &node_arr, node_arr_len, _input.topic, strlen(_input.topic), _input.data, strlen(_input.data), timeout_ms);
@@ -1022,20 +963,11 @@
    }
#endif 
    pthread_mutex_unlock(&mutex);
    if (rv > 0)
      return true;
    
    memset(errString, 0x00, sizeof(errString));
    strncpy(errString, bus_strerror(rv), sizeof(errString));
  } else {
    rv = EBUS_RES_BUSY;
    memset(errString, 0x00, sizeof(errString));
    strncpy(errString, bus_strerror(rv), sizeof(errString));
  }
  return false;
}
@@ -1108,8 +1040,6 @@
      
      logger->error("in BHRequest: Out of memory!\n");
      
      pthread_mutex_unlock(&mutex);
      return false;
    }
    memset(topics_buf, 0x00, len + 10);
@@ -1128,7 +1058,6 @@
        logger->error("in BHRequest: Out of memory!\n");
        
        free(topics_buf);
        pthread_mutex_unlock(&mutex);
        return false;
      }
@@ -1274,8 +1203,6 @@
    return false;
  }
 
  rv = pthread_mutex_trylock(&mutex);
  if (rv == 0) {
#if defined(PRO_DE_SERIALIZE)
    strncpy(buf_temp, _input1.topic, (sizeof(buf_temp) - 1) > strlen(_input1.topic) ? strlen(_input1.topic) : (sizeof(buf_temp) - 1));
#else 
@@ -1304,8 +1231,6 @@
          strncpy(errString, bus_strerror(rv), sizeof(errString));
          
          logger->error("in BHRequest: Out of memory!\n");
          pthread_mutex_unlock(&mutex);
          return false;
        }
@@ -1345,19 +1270,11 @@
    memset(errString, 0x00, sizeof(errString));
    strncpy(errString, bus_strerror(rv), sizeof(errString));
    
    pthread_mutex_unlock(&mutex);
    if((msg_id == NULL) || (msg_id_len == NULL)) { 
      if (rv == 0)
        return true;
      
      return false;
    }
  } else {
    rv = EBUS_RES_BUSY;
    memset(errString, 0x00, sizeof(errString));
    strncpy(errString, bus_strerror(rv), sizeof(errString));
  }
  
  if (rv == 0) {
@@ -1455,8 +1372,6 @@
    return false;
  }
  
  rv = pthread_mutex_trylock(&mutex);
  if (rv == 0) {
#if defined(PRO_DE_SERIALIZE)
    strncpy(buf_temp, _input1.topic, (sizeof(buf_temp) - 1) > strlen(_input1.topic) ? strlen(_input1.topic)  : (sizeof(buf_temp) - 1));
#else 
@@ -1487,8 +1402,6 @@
          strncpy(errString, bus_strerror(rv), sizeof(errString));
          
          logger->error("in BHRequest: Out of memory!\n");
          pthread_mutex_unlock(&mutex);
          return false;
        }
@@ -1573,8 +1486,6 @@
        
        logger->error("in BHRequest: Out of memory!\n");
        
        pthread_mutex_unlock(&mutex);
        return false;
      }
      memset(topics_buf, 0x00, size + 10);
@@ -1584,15 +1495,6 @@
      
      free(buf);
      free(topics_buf);
    }
    pthread_mutex_unlock(&mutex);
  } else {
    rv = EBUS_RES_BUSY;
    memset(errString, 0x00, sizeof(errString));
    strncpy(errString, bus_strerror(rv), sizeof(errString));
  }
#if defined(PRO_DE_SERIALIZE) 
@@ -1787,22 +1689,11 @@
    return false;
  }
  rv = pthread_mutex_trylock(&mutex);
  if (rv == 0) {
    data = net_mod_socket_svr_get(gNetmod_socket);
    rv = net_mod_socket_sendto(gNetmod_socket, _input, strlen(_input), *(int *)src, SVR_STR, data);
    memset(errString, 0x00, sizeof(errString));
    strncpy(errString, bus_strerror(rv), sizeof(errString));
    pthread_mutex_unlock(&mutex);
  } else {
    rv = EBUS_RES_BUSY;
    memset(errString, 0x00, sizeof(errString));
    strncpy(errString, bus_strerror(rv), sizeof(errString));
  }
  
  if (rv == 0)
    return true;