From 73689afc09ce346f9eb00e02faf7f242e55dc7ee Mon Sep 17 00:00:00 2001
From: fujuntang <fujuntang@smartai.com>
Date: 星期四, 09 十二月 2021 19:33:00 +0800
Subject: [PATCH] Add the sync to fix the resource clear issue.

---
 src/socket/shm_mod_socket.cpp |   18 ++++++++----------
 1 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/src/socket/shm_mod_socket.cpp b/src/socket/shm_mod_socket.cpp
index 7562d56..ababb7d 100644
--- a/src/socket/shm_mod_socket.cpp
+++ b/src/socket/shm_mod_socket.cpp
@@ -38,10 +38,6 @@
 	return shm_socket_force_bind(shm_socket, key);
 }
 
-int ShmModSocket::bind_proc_id(char *buf, int len) {
-  return shm_socket_bind_proc_id(shm_socket, buf, len);
-}
-
 int ShmModSocket::reg(void *pData, int len, void **buf, int *size, const int timeout_ms, int flag)
 {
   int ret;
@@ -72,6 +68,10 @@
   } else  if (flag == PROC_QUE_ATCS) {
 
     memcpy(head.action, "atcsque", sizeof(head.action));
+
+  } else if (flag == PROC_REG_BUF) {
+
+    memcpy(head.action, "bufreg", sizeof(head.action));
 
   } else {
 
@@ -119,7 +119,7 @@
     
     ts.tv_nsec = (timeout_ms - ts.tv_sec * 1000) * 1000 * 1000;
   
-    if ((flag == PROC_REG) || (flag == PROC_UNREG) || (flag == PROC_REG_TCS)) {
+    if ((flag == PROC_REG) || (flag == PROC_UNREG) || (flag == PROC_REG_TCS) || (flag == PROC_REG_BUF)) {
 
       ret = shm_sendto(shm_socket, buf_temp, buf_size, SHM_BUS_KEY, &ts, BUS_TIMEOUT_FLAG);
 
@@ -131,7 +131,7 @@
   
   } else if (timeout_ms == 0) {
   
-    if ((flag == PROC_REG) || (flag == PROC_UNREG) || (flag == PROC_REG_TCS)) {
+    if ((flag == PROC_REG) || (flag == PROC_UNREG) || (flag == PROC_REG_TCS) || (flag == PROC_REG_BUF)) {
 
       ret = shm_sendto(shm_socket, buf_temp, buf_size, SHM_BUS_KEY, &ts, BUS_NOWAIT_FLAG);
 
@@ -143,7 +143,7 @@
  
   } else {
 
-    if ((flag == PROC_REG) || (flag == PROC_UNREG) || (flag == PROC_REG_TCS)) {
+    if ((flag == PROC_REG) || (flag == PROC_UNREG) || (flag == PROC_REG_TCS) || (flag == PROC_REG_BUF)) {
     
       ret = shm_sendto(shm_socket, buf_temp, buf_size, SHM_BUS_KEY, &ts, -1);
 
@@ -169,7 +169,6 @@
 int ShmModSocket::sendto(const void *buf, const int size, const int key, const struct timespec *timeout, int flag, int reset, int data_set) {
 	int rv = shm_sendto(shm_socket, buf, size, key, timeout, flag, reset, data_set);
   if(rv == 0) {
-	  logger->debug("ShmModSocket::sendto: %d sendto %d success.\n", get_key(), key);
 	  return 0;
   }
 
@@ -187,7 +186,6 @@
   int rv =  shm_recvfrom(shm_socket, buf, size, key, timeout, flag, reset, data_set);
 
 	if(rv == 0) {
-    logger->debug("ShmModSocket::recvfrom: %d recvfrom %d success.\n", get_key(), *key);
     return 0;
   }
 
@@ -206,7 +204,6 @@
 	int rv = shm_sendandrecv(shm_socket, send_buf, send_size, send_key, recv_buf, recv_size, timeout, flag);
 
 	if(rv == 0) {
-	  logger->debug("ShmModSocket::sendandrecv:  sendandrecv to %d success.\n", send_key);
 	  return 0;
   }
 
@@ -304,6 +301,7 @@
 int  ShmModSocket::pub(const char *topic, int topic_size, const void *content, int content_size, int key, const struct timespec *timeout, int flags) {
 	int ret;
 	bus_head_t head = {};
+    topic = trim(const_cast<char *>(topic), 0);
 	memcpy(head.action, "pub", sizeof(head.action));
 	head.topic_size = topic_size = strlen(topic) + 1;
 	head.content_size = content_size;

--
Gitblit v1.8.0