wangzhengquan
2020-10-20 9b29a67af93e4ab9948cc60f743d73c4bb39e738
src/socket/shm_socket.c
@@ -48,15 +48,21 @@
}
int shm_close_socket(shm_socket_t *socket) {
  int ret;
  switch (socket->socket_type) {
  case SHM_SOCKET_STREAM:
    return _shm_close_stream_socket(socket, true);
  case SHM_SOCKET_DGRAM:
    return _shm_close_dgram_socket(socket);
  default:
    return -1;
    case SHM_SOCKET_STREAM:
      ret =  _shm_close_stream_socket(socket, true);
      break;
    case SHM_SOCKET_DGRAM:
      ret =  _shm_close_dgram_socket(socket);
      break;
    default:
      break;
  }
  return -1;
  SemUtil::remove(socket->mutex);
  free(socket);
  return ret;
}
int shm_socket_bind(shm_socket_t *socket, int port) {
@@ -380,6 +386,27 @@
  return -1;
}
int shm_sendandrecv_unsafe(shm_socket_t *socket, const void *send_buf,
                    const int send_size, const int send_port, void **recv_buf,
                    int *recv_size,  struct timespec *timeout,  int flags) {
  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;
  if ((rv = shm_sendto(socket, send_buf, send_size, send_port, timeout, flags)) == 0) {
    rv = shm_recvfrom(socket, recv_buf, recv_size, &recv_port, timeout, flags);
    return rv;
  } else {
    return rv;
  }
  return -1;
}
// ============================================================================================================
/**
@@ -531,7 +558,7 @@
  if (socket->dispatch_thread != 0)
    pthread_cancel(socket->dispatch_thread);
  free(socket);
  return 0;
}
@@ -541,7 +568,7 @@
      delete socket->queue;
      socket->queue = NULL;
   }
   free(socket);
   return 0;
}