| | |
| | | } |
| | | |
| | | 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) { |
| | |
| | | if (socket->dispatch_thread != 0) |
| | | pthread_cancel(socket->dispatch_thread); |
| | | |
| | | free(socket); |
| | | |
| | | return 0; |
| | | |
| | | } |
| | |
| | | delete socket->queue; |
| | | socket->queue = NULL; |
| | | } |
| | | free(socket); |
| | | |
| | | return 0; |
| | | } |
| | | |