From f5f063a8d4fdf1e9e967a2206f7cc8de2d549b66 Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期四, 03 十二月 2020 15:05:23 +0800 Subject: [PATCH] update --- src/socket/shm_socket.c | 29 +++++++++++++++++++++-------- 1 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/socket/shm_socket.c b/src/socket/shm_socket.c index fe25e3c..0ac71cb 100644 --- a/src/socket/shm_socket.c +++ b/src/socket/shm_socket.c @@ -19,10 +19,11 @@ static int _shm_close_stream_socket(shm_socket_t *socket, bool notifyRemote); +// 妫�鏌ey鏄惁宸茬粡琚娇鐢紝鏄繑鍥�0, 鍚﹁繑鍥�1 static inline int _shm_socket_check_key(shm_socket_t *socket) { void *tmp_ptr = mm_get_by_key(socket->key); if (tmp_ptr!= NULL && tmp_ptr != (void *)1 && !socket->force_bind ) { - err_exit(0, "key %d has already been in used!", socket->key); + logger->error("key %d has already been in used!", socket->key); return 0; } return 1; @@ -91,7 +92,9 @@ socket->key = key; } else { - _shm_socket_check_key(socket); + if(!_shm_socket_check_key(socket)) { + return -1; + } } socket->queue = new SHMQueue<shm_msg_t>(socket->key, 16); @@ -161,6 +164,9 @@ } +/** + * @return 0鎴愬姛. 鍏朵粬鍊煎け璐� + */ int shm_connect(shm_socket_t *socket, int key) { if (socket->socket_type != SHM_SOCKET_STREAM) { logger->error( "can not invoke shm_connect method with a socket which is not " @@ -170,20 +176,22 @@ hashtable_t *hashtable = mm_get_hashtable(); if (hashtable_get(hashtable, key) == NULL) { logger->error("shm_connect锛歝onnect at key %d failed!", key); - exit(1); + return -1; } if (socket->key == -1) { socket->key = hashtable_alloc_key(hashtable); } else { - _shm_socket_check_key(socket); + if(!_shm_socket_check_key(socket)) { + return -1; + } } socket->queue = new SHMQueue<shm_msg_t>(socket->key, 16); if ((socket->remoteQueue = _attach_remote_queue(key)) == NULL) { logger->error("connect to %d failted", key); - exit(1); + return -1; } socket->messageQueue = new LockFreeQueue<shm_msg_t, DM_Allocator>(16); @@ -209,7 +217,7 @@ } else { logger->error( "connect failted!"); - exit(1); + return -1; } return 0; @@ -280,7 +288,10 @@ socket->key = hashtable_alloc_key(hashtable); } else { - _shm_socket_check_key(socket); + if(!_shm_socket_check_key(socket)) { + return -1; + } + } socket->queue = new SHMQueue<shm_msg_t>(socket->key, 16); @@ -342,7 +353,9 @@ socket->key = hashtable_alloc_key(hashtable); } else { - _shm_socket_check_key(socket); + if(!_shm_socket_check_key(socket)) { + return -1; + } } socket->queue = new SHMQueue<shm_msg_t>(socket->key, 16); -- Gitblit v1.8.0