From aeaeda81cfe398081a7c1a5c287981c8df974aa2 Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期一, 27 七月 2020 19:03:38 +0800
Subject: [PATCH] commit

---
 demo/dgram_mod_req_rep        |    0 
 src/queue/include/mem_pool.h  |   15 +++++++++++++--
 src/libshm_queue.a            |    0 
 test_socket/dgram_mod_bus.c   |    3 ++-
 src/socket/dgram_mod_socket.c |    2 +-
 test_socket/dgram_mod_bus     |    0 
 test_socket/dgram_mod_req_rep |    0 
 demo/dgram_mod_survey         |    0 
 demo/dgram_mod_bus.c          |   28 +++++++++++++++++++++-------
 test_socket/dgram_mod_survey  |    0 
 10 files changed, 37 insertions(+), 11 deletions(-)

diff --git a/demo/dgram_mod_bus.c b/demo/dgram_mod_bus.c
index bddc7d5..1c6268d 100644
--- a/demo/dgram_mod_bus.c
+++ b/demo/dgram_mod_bus.c
@@ -1,13 +1,21 @@
 #include "dgram_mod_socket.h"
 #include "shm_mm.h"
 #include "usg_common.h"
+#include "mm.h"
 
-void server(int port) {
-  void *socket = dgram_mod_open_socket();
-  dgram_mod_bind(socket, port);
+
+
+void server(int port, bool restart) {
+  void * server_socket = dgram_mod_open_socket();
+
+  if(restart) {
+    dgram_mod_force_bind(server_socket, port);
+  } else {
+     dgram_mod_bind(server_socket, port);
+  }
+ 
    
-  dgram_mod_start_bus(socket);
-  
+  dgram_mod_start_bus(server_socket);
 }
 
 
@@ -68,14 +76,20 @@
   shm_init(512);
   int port;
   if (argc < 3) {
-    fprintf(stderr, "Usage: reqrep %s|%s <PORT> ...\n", "server", "client");
+    fprintf(stderr, "Usage: %s %s|%s <PORT> ...\n", argv[0], "server", "client");
     return 1;
   }
 
   port = atoi(argv[2]);
 
   if (strcmp("server", argv[1]) == 0) {
-    server(port);
+    if(argc >= 4 && strcmp("restart", argv[3]) == 0) {
+      server(port, true);
+    }
+    else{
+      server(port, false);
+    }
+    
   }
 
   if (strcmp("client", argv[1]) == 0)
diff --git a/demo/dgram_mod_req_rep b/demo/dgram_mod_req_rep
index 6b03fdf..ed8fe41 100755
--- a/demo/dgram_mod_req_rep
+++ b/demo/dgram_mod_req_rep
Binary files differ
diff --git a/demo/dgram_mod_survey b/demo/dgram_mod_survey
index a3765fc..00bf41d 100755
--- a/demo/dgram_mod_survey
+++ b/demo/dgram_mod_survey
Binary files differ
diff --git a/src/libshm_queue.a b/src/libshm_queue.a
index 56836b6..1e2bd99 100644
--- a/src/libshm_queue.a
+++ b/src/libshm_queue.a
Binary files differ
diff --git a/src/queue/include/mem_pool.h b/src/queue/include/mem_pool.h
index d5a4110..72ad5b7 100644
--- a/src/queue/include/mem_pool.h
+++ b/src/queue/include/mem_pool.h
@@ -40,16 +40,27 @@
 	// T* tptr;
 	hashtable_t *hashtable = mm_get_hashtable();
   ptr = hashtable_get(hashtable, key);
-printf("mem_pool_malloc_by_key  malloc before %d, %p\n", key, ptr);
+// printf("mem_pool_malloc_by_key  malloc before %d, %p\n", key, ptr);
   if(ptr == NULL || ptr == (void *)1 ) {
     ptr = mm_malloc(sizeof(T));
     hashtable_put(hashtable, key, ptr);
     new(ptr) T;
-printf("mem_pool_malloc_by_key  use new %d, %p\n", key, ptr);
+// printf("mem_pool_malloc_by_key  use new %d, %p\n", key, ptr);
   }
   return (T*)ptr; 
 }
 
+static inline void mem_pool_free_by_key(int key) {
+	void *ptr;
+	// T* tptr;
+	hashtable_t *hashtable = mm_get_hashtable();
+  ptr = hashtable_get(hashtable, key);
+  if(ptr != NULL) {
+  	mm_free(ptr);
+  	hashtable_remove(hashtable, key);
+  }
+}
+
 static inline void mem_pool_free (void *ptr) {
 	mm_free(ptr);
 	// notify malloc
diff --git a/src/socket/dgram_mod_socket.c b/src/socket/dgram_mod_socket.c
index 1fa1303..5a7a0b7 100644
--- a/src/socket/dgram_mod_socket.c
+++ b/src/socket/dgram_mod_socket.c
@@ -49,7 +49,7 @@
 			subscripter_set = map_iter->second;
 			delete subscripter_set;
 		}
-		delete topic_sub_map;
+		mem_pool_free_by_key(BUS_MAP_KEY);
 	}
 	
 
diff --git a/test_socket/dgram_mod_bus b/test_socket/dgram_mod_bus
index 3e8dd52..b5eccd6 100755
--- a/test_socket/dgram_mod_bus
+++ b/test_socket/dgram_mod_bus
Binary files differ
diff --git a/test_socket/dgram_mod_bus.c b/test_socket/dgram_mod_bus.c
index 86e49a7..1c6268d 100644
--- a/test_socket/dgram_mod_bus.c
+++ b/test_socket/dgram_mod_bus.c
@@ -2,7 +2,8 @@
 #include "shm_mm.h"
 #include "usg_common.h"
 #include "mm.h"
- 
+
+
 
 void server(int port, bool restart) {
   void * server_socket = dgram_mod_open_socket();
diff --git a/test_socket/dgram_mod_req_rep b/test_socket/dgram_mod_req_rep
index bbe11f8..29f0599 100755
--- a/test_socket/dgram_mod_req_rep
+++ b/test_socket/dgram_mod_req_rep
Binary files differ
diff --git a/test_socket/dgram_mod_survey b/test_socket/dgram_mod_survey
index 03db8ff..48db086 100755
--- a/test_socket/dgram_mod_survey
+++ b/test_socket/dgram_mod_survey
Binary files differ

--
Gitblit v1.8.0