void sp_writer_free_block (ShmBlock * block) { shm_alloc_space_block_dec (block->ablock); sp_shm_area_dec (block->pipe, block->area); sp_dec (block->pipe); spalloc_free (ShmBlock, block); }
void sp_close (ShmPipe * self) { if (self->main_socket >= 0) close (self->main_socket); if (self->socket_path) { unlink (self->socket_path); free (self->socket_path); } while (self->clients) sp_writer_close_client (self, self->clients); sp_dec (self); }
void sp_writer_close (ShmPipe * self, sp_buffer_free_callback callback, void *user_data) { if (self->main_socket >= 0) { shutdown (self->main_socket, SHUT_RDWR); close (self->main_socket); } if (self->socket_path) { unlink (self->socket_path); free (self->socket_path); } while (self->clients) sp_writer_close_client (self, self->clients, callback, user_data); sp_dec (self); }