From 950e8841a4eada051108084606c3205e67cac804 Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期四, 23 七月 2020 17:11:03 +0800
Subject: [PATCH] commit

---
 src/libshm_queue.a              |    0 
 src/socket/shm_socket.c         |   20 ++++++++++++++++----
 test_socket/dgram_socket_test   |    0 
 demo/pub_sub                    |    0 
 test_socket/dgram_mod_req_rep   |    0 
 test_socket/dgram_mod_req_rep.c |    2 +-
 demo/req_rep                    |    0 
 test_socket/Makefile            |    2 +-
 test_socket/dgram_mod_survey    |    0 
 9 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/demo/pub_sub b/demo/pub_sub
index ce02873..de2e57e 100755
--- a/demo/pub_sub
+++ b/demo/pub_sub
Binary files differ
diff --git a/demo/req_rep b/demo/req_rep
index bfb33e1..7ec846c 100755
--- a/demo/req_rep
+++ b/demo/req_rep
Binary files differ
diff --git a/src/libshm_queue.a b/src/libshm_queue.a
index 396bc22..fc99639 100644
--- a/src/libshm_queue.a
+++ b/src/libshm_queue.a
Binary files differ
diff --git a/src/socket/shm_socket.c b/src/socket/shm_socket.c
index 6708469..185ecaf 100644
--- a/src/socket/shm_socket.c
+++ b/src/socket/shm_socket.c
@@ -96,7 +96,8 @@
 
 // print_msg("===accept:", src);
 		client_port = src.port;
-		client_socket = (shm_socket_t *)malloc(sizeof(shm_socket_t));
+		// client_socket = (shm_socket_t *)malloc(sizeof(shm_socket_t));
+		client_socket = shm_open_socket(socket->socket_type);
 		client_socket->port = socket->port;
 		// client_socket->queue= socket->queue;
 		//鍒濆鍖栨秷鎭痲ueue
@@ -211,7 +212,7 @@
 
 int shm_recv(shm_socket_t* socket, void **buf, int *size) {
 	if(socket->socket_type != SHM_SOCKET_STREAM) {
-		err_exit(0, "can not invoke shm_recv method with a socket which is not a SHM_SOCKET_STREAM socket");
+		err_exit(0, "can not invoke shm_recv method in a %d type socket  which is not a SHM_SOCKET_STREAM socket ", socket->socket_type);
 	}
 	shm_msg_t src;
 
@@ -232,6 +233,9 @@
 
 // 鐭繛鎺ユ柟寮忓彂閫�
 int shm_sendto(shm_socket_t *socket, const void *buf, const int size, const int port) {
+	if(socket->socket_type != SHM_SOCKET_DGRAM) {
+		err_exit(0, "Can't invoke shm_sendto method in a %d type socket  which is not a SHM_SOCKET_DGRAM socket ", socket->socket_type);
+	}
 	hashtable_t *hashtable = mm_get_hashtable();
 
 	if(socket->queue == NULL) {
@@ -272,6 +276,9 @@
 
 // 鐭繛鎺ユ柟寮忔帴鍙�
 int shm_recvfrom(shm_socket_t *socket, void **buf, int *size, int *port){
+	if(socket->socket_type != SHM_SOCKET_DGRAM) {
+		err_exit(0, "Can't invoke shm_recvfrom method in a %d type socket  which is not a SHM_SOCKET_DGRAM socket ", socket->socket_type);
+	}
 	hashtable_t *hashtable = mm_get_hashtable();
 	if(socket->queue == NULL) {
 		if(socket->port == -1) {
@@ -303,6 +310,9 @@
 }
 
 int shm_sendandrecv(shm_socket_t *socket, const void *send_buf, const int send_size, const int send_port, void **recv_buf, int *recv_size) {
+	if(socket->socket_type != SHM_SOCKET_DGRAM) {
+		err_exit(0, "Can't invoke shm_sendandrecv method in a %d type socket  which is not a SHM_SOCKET_DGRAM socket ", socket->socket_type);
+	}
 	int recv_port;
 	int rv;
 
@@ -336,11 +346,13 @@
 
 void _server_close_conn_to_client(shm_socket_t* socket, int port) {
 	shm_socket_t *client_socket;
-	auto iter = socket->clientSocketMap->find(port);
+	std::map<int, shm_socket_t* >::iterator iter = socket->clientSocketMap->find(port);
 	if( iter !=  socket->clientSocketMap->end() ) {
+		client_socket = iter->second;
+		free((void *)client_socket);
 		socket->clientSocketMap->erase(iter);
 	}
-	free((void *)client_socket);
+	
 
 }
 
diff --git a/test_socket/Makefile b/test_socket/Makefile
index dd1d80f..f3d0ac8 100644
--- a/test_socket/Makefile
+++ b/test_socket/Makefile
@@ -14,7 +14,7 @@
 include $(ROOT)/Make.defines.$(PLATFORM)
 
 
-PROGS =	dgram_socket_test dgram_mod_req_rep dgram_mod_survey
+PROGS =	dgram_socket_test dgram_mod_req_rep dgram_mod_survey stream_mod_req_rep
 
 
 build: $(PROGS)
diff --git a/test_socket/dgram_mod_req_rep b/test_socket/dgram_mod_req_rep
index 3d62d71..0405276 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_req_rep.c b/test_socket/dgram_mod_req_rep.c
index f4d2918..119b497 100644
--- a/test_socket/dgram_mod_req_rep.c
+++ b/test_socket/dgram_mod_req_rep.c
@@ -130,7 +130,7 @@
 
   double difftime = end.tv_sec * 1000000 + end.tv_usec - (start.tv_sec * 1000000 + start.tv_usec);
   long diffsec = (long) (difftime/1000000);
-  long diffmsec = difftime - diffsec;
+  long diffmsec = difftime - diffsec*1000000;
   printf("cost: %ld sec: %ld msc\n", diffsec, diffmsec);
 }
  
diff --git a/test_socket/dgram_mod_survey b/test_socket/dgram_mod_survey
index dbb98dc..098d542 100755
--- a/test_socket/dgram_mod_survey
+++ b/test_socket/dgram_mod_survey
Binary files differ
diff --git a/test_socket/dgram_socket_test b/test_socket/dgram_socket_test
index 63e14ea..98b6997 100755
--- a/test_socket/dgram_socket_test
+++ b/test_socket/dgram_socket_test
Binary files differ

--
Gitblit v1.8.0