From bae3a4fd9406635608edf0c0d16c52cf7ca06a66 Mon Sep 17 00:00:00 2001
From: fujuntang <fujuntang@smartai.com>
Date: 星期六, 23 十月 2021 15:20:57 +0800
Subject: [PATCH] Optimize the code source.

---
 src/bh_api.cpp |   30 +++++++++++++++++-------------
 1 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/src/bh_api.cpp b/src/bh_api.cpp
index b774d4e..37f8377 100644
--- a/src/bh_api.cpp
+++ b/src/bh_api.cpp
@@ -7,6 +7,7 @@
 #include "bh_api.h"
 #include <pthread.h>
 #include <getopt.h>
+#include "msg_mgr.h"
 #include "../proto/source/error_msg.pb.h"
 #include "../proto/source/bhome_msg.pb.h"
 #include "../proto/source/bhome_msg_api.pb.h"
@@ -17,7 +18,6 @@
 
 static int gRun_stat = 0;
 static void *gNetmod_socket = NULL;
-static std::map<std::string, int> gRecvbuf;
 
 static pthread_mutex_t mutex;
 
@@ -102,6 +102,10 @@
   memset(&pData, 0x00, sizeof(ProcInfo));
   if (gRun_stat == 0) {
     pthread_mutex_init(&mutex, NULL);
+    
+#if defined(MSG_HANDLER)
+    msg_init();
+#endif 
 
   } else {
     logger->error("the process has already registered!\n");
@@ -1197,7 +1201,6 @@
   std::string str;
   std::string MsgID;
   int timeout_ms = 3000;
-  std::map<std::string, int>::iterator recvIter;
   char data_buf[MAX_STR_LEN] = { 0x00 };
   char buf_temp[MAX_STR_LEN] = { 0x00 };
   char *topics_buf = NULL;
@@ -1260,11 +1263,10 @@
 #endif 
  
   str = buf_temp;
-  recvIter = gRecvbuf.find(str);
-  if(recvIter != gRecvbuf.end()) {
+  val = net_mod_socket_buf_data_get(gNetmod_socket, str);
+  if(val > 0) {
     
     rv = 0;
-    val = recvIter->second;
 
   } else {
     rv = net_mod_socket_reg(gNetmod_socket, buf_temp, strlen(buf_temp), &buf, &size, timeout_ms, PROC_QUE_STCS);
@@ -1275,7 +1277,7 @@
       val = atoi((char *)data_buf);
       if (val > 0) {
         str = buf_temp;
-        gRecvbuf.insert({str, val});
+        net_mod_socket_buf_data_set(gNetmod_socket, str, val);
       }
 
       free(buf);
@@ -1376,7 +1378,6 @@
   net_mod_err_t *errarr;
   int errarr_size = 0;
   char *errString = NULL;
-  std::map<std::string, int>::iterator recvIter;
   char buf_temp[MAX_STR_LEN] = { 0x00 };
   char *topics_buf = NULL;
   
@@ -1445,11 +1446,10 @@
 #endif 
  
   str = buf_temp;
-  recvIter = gRecvbuf.find(str);
-  if(recvIter != gRecvbuf.end()) {
+  val = net_mod_socket_buf_data_get(gNetmod_socket, str);
+  if(val > 0) {
     
     rv = 0;
-    val = recvIter->second;
 
   } else {
     rv = net_mod_socket_reg(gNetmod_socket, buf_temp, strlen(buf_temp), &buf, &size, timeout_ms, PROC_QUE_STCS);
@@ -1460,7 +1460,7 @@
       val = atoi((char *)data_buf);
       if (val > 0) {
         str = buf_temp;
-        gRecvbuf.insert({str, val});
+        net_mod_socket_buf_data_set(gNetmod_socket, str, val);
       }
 
       free(buf);
@@ -1814,9 +1814,13 @@
 
 }
 
+#if defined(MSG_HANDLER)
 int inter_key_get(void)
 {
-  return net_mod_socket_get_key(gNetmod_socket);  
-}
+  if (gNetmod_socket != NULL)
+    return net_mod_socket_get_key(gNetmod_socket);
 
+  return 0;
+}
+#endif 
 

--
Gitblit v1.8.0