wangzhengquan
2020-12-03 f5f063a8d4fdf1e9e967a2206f7cc8de2d549b66
update
1个文件已修改
29 ■■■■ 已修改文件
src/socket/shm_socket.c 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/socket/shm_socket.c
@@ -19,10 +19,11 @@
static int _shm_close_stream_socket(shm_socket_t *socket, bool notifyRemote);
// 检查key是否已经被使用,是返回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:connect 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);