wangzhengquan
2021-03-13 a38304f7f6b91aaa1b0aa76cc9d3e5b6aef1f85f
src/socket/shm_socket.cpp
@@ -46,7 +46,7 @@
  if (tmp_ptr == NULL || tmp_ptr == (void *)1  ) {
    queue = new LockFreeQueue<shm_packet_t>(16);
    queue = new LockFreeQueue<shm_packet_t>(1024);
    hashtable_put(hashtable, key, (void *)queue);
    hashtable_unlock(hashtable);
    return queue;
@@ -112,12 +112,9 @@
static int _shm_socket_close_(shm_socket_t *sockt) {
  
  int rv;
  int rv, i;
  logger->debug("shm_socket_close\n");
  // hashtable_remove(hashtable, mkey);
  // if(sockt->queue != NULL) {
  //   sockt->queue = NULL;
  // }
  if(sockt->key != 0) {
    auto it =  shmQueueStMap->find(sockt->key);
@@ -127,6 +124,24 @@
    }
  }
  printf("====sockt->queue addr = %p\n", sockt->queue);
  if(sockt->queue != NULL) {
    for( i = 0; i < sockt->queue->size(); i++) {
      mm_free((*(sockt->queue))[i].buf);
      logger->info("======= %d free queue element buf\n", sockt->key);
    }
    // hashtable_remove(hashtable, mkey);
  //   sockt->queue = NULL;
  }
  // hashtable_remove(hashtable, mkey);
  // if(sockt->queue != NULL) {
  //   sockt->queue = NULL;
  // }
 
  pthread_mutex_destroy(&(sockt->mutex) );
@@ -168,8 +183,6 @@
int shm_socket_get_key(shm_socket_t *sockt){
  return sockt->key;
}
// 短连接方式发送
int shm_sendto(shm_socket_t *sockt, const void *buf, const int size,
@@ -600,6 +613,10 @@
  sendpak->key = sockt->key;
  rv = remoteQueue->push(*sendpak, timeout, flag);
  if(rv != 0) {
    mm_free(sendpak->buf);
  }
  if(rv == ETIMEDOUT) {
    return EBUS_TIMEOUT;
  }