From fb8aef5a4908a50d415cf5ed33a10699fdfa9c98 Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期二, 22 十二月 2020 11:06:15 +0800
Subject: [PATCH] udpate

---
 src/socket/net_mod_socket.c |   44 +++++++++++++++++++++-----------------------
 1 files changed, 21 insertions(+), 23 deletions(-)

diff --git a/src/socket/net_mod_socket.c b/src/socket/net_mod_socket.c
index a3d4543..1e1fc27 100644
--- a/src/socket/net_mod_socket.c
+++ b/src/socket/net_mod_socket.c
@@ -15,7 +15,8 @@
 
 NetModSocket::NetModSocket() 
 {
-  if (Signal(SIGPIPE, SIG_IGN) == SIG_ERR)    err_msg(errno, "signal");
+  if (Signal(SIGPIPE, SIG_IGN) == SIG_ERR)
+      logger->error(errno, "NetModSocket::NetModSocket signal");
 }
 
 
@@ -56,21 +57,23 @@
 
 
 /* Free thread-specific data buffer */
-void NetModSocket::_destructor_(void *_pool)
+void NetModSocket::_destroyConnPool_(void *_pool)
 {
+
   NetConnPool *mpool = (NetConnPool *)_pool;
   delete mpool;
+  logger->debug("destory connPool");
 }
 
  /* One-time key creation function */
-void NetModSocket::_createKey_(void)
+void NetModSocket::_createConnPoolKey_(void)
 {
   int ret;
 
   /* Allocate a unique thread-specific data key and save the address
      of the destructor for thread-specific data buffers */
 
-  ret = pthread_key_create(&poolKey, _destructor_);
+  ret = pthread_key_create(&poolKey, _destroyConnPool_);
   if (ret != 0) {
     logger->error(ret, "pthread_key_create");
     exit(1);
@@ -83,8 +86,6 @@
   int i, n, recv_size, connfd;
   net_node_t *node;
   void *recv_buf;
-
- 
   
   net_mod_request_head_t request_head = {};
  
@@ -97,8 +98,7 @@
   NetConnPool *mpool;
 
   /* Make first caller allocate key for thread-specific data */
-
-  ret = pthread_once(&once, _createKey_);
+  ret = pthread_once(&once, _createConnPoolKey_);
   if (ret != 0) {
     LoggerFactory::getLogger()->error(errno, "NetModSocket::_sendandrecv_ pthread_once");
     exit(1);
@@ -107,8 +107,8 @@
   mpool = (NetConnPool *)pthread_getspecific(poolKey);
   if (mpool == NULL)
   {
-    /* If first call from this thread, allocate
-                                   buffer for thread, and save its location */
+    /* If first call from this thread, allocate buffer for thread, and save its location */
+    logger->debug("Create connPool");
     mpool = new NetConnPool();
     if (mpool == NULL) {
       LoggerFactory::getLogger()->error(errno, "NetModSocket::_sendandrecv_ malloc");
@@ -129,10 +129,10 @@
   for (i = 0; i< arrlen; i++) {
 
     node = &node_arr[i];
-    if(node->host == NULL) {
+    if(node->host == NULL || strcmp(node->host, "") == 0 ) {
       // 鏈湴鍙戦��
       shmModSocket.sendandrecv(send_buf, send_size, node->key, &recv_buf, &recv_size);
-      strcpy( ret_arr[n_recv_suc].host,"localshm");
+      strcpy( ret_arr[n_recv_suc].host,"");
       ret_arr[n_recv_suc].port = 0;
       ret_arr[n_recv_suc].key = node->key;
       ret_arr[n_recv_suc].content = recv_buf;
@@ -264,7 +264,7 @@
   NetConnPool *mpool;
 
   /* Make first caller allocate key for thread-specific data */
-  ret = pthread_once(&once, _createKey_);
+  ret = pthread_once(&once, _createConnPoolKey_);
   if (ret != 0) {
     LoggerFactory::getLogger()->error(errno, "NetModSocket::_sendandrecv_ pthread_once");
     exit(1);
@@ -287,7 +287,13 @@
     }
   }
 
-  
+  // 鏈湴鍙戦��
+  if(node_arr == NULL || arrlen == 0) {
+    if(shmModSocket.pub(topic, topic_size, content, content_size, node->key) == 0 ) {
+      n_pub_suc++;
+    }
+  }
+
   for (i = 0; i < arrlen; i++) {
 
     node = &node_arr[i];
@@ -303,6 +309,7 @@
         continue;
       }
       request_head.mod = BUS;
+      memcpy(request_head.host, node->host, sizeof(request_head.host));
       request_head.key = node->key;
       request_head.content_length = content_size;
       request_head.topic_length = strlen(topic) + 1;
@@ -557,15 +564,6 @@
   return shmModSocket.sendandrecv_nowait(send_buf, send_size, key, recv_buf, recv_size);
 }
 
-
-/**
- * 鍚姩bus
- * 
- * @return 0 鎴愬姛锛� 鍏朵粬鍊� 澶辫触鐨勯敊璇爜
-*/
-int  NetModSocket::start_bus() {
-  return shmModSocket.start_bus();
-}
 
 /**
  * 璁㈤槄鎸囧畾涓婚

--
Gitblit v1.8.0