| | |
| | | |
| | | int _shm_close_stream_socket(shm_socket_t *socket, bool notifyRemote); |
| | | |
| | | static inline int _shm_socket_check_key(shm_socket_t *socket) { |
| | | void *tmp_ptr = mm_get_by_key(socket->port); |
| | | if (tmp_ptr!= NULL && tmp_ptr != (void *)1 && !socket->force_bind ) { |
| | | err_exit(0, "key %d has already been in used!", socket->port); |
| | | return 0; |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | SHMQueue<shm_msg_t> *_attach_remote_queue(int port); |
| | | |
| | | shm_socket_t *shm_open_socket(shm_socket_type_t socket_type) { |
| | |
| | | socket->port = port; |
| | | } else { |
| | | |
| | | if (hashtable_get(hashtable, socket->port) != NULL && !socket->force_bind) { |
| | | err_exit(0, "key %d has already been in used!", socket->port); |
| | | } |
| | | _shm_socket_check_key(socket); |
| | | } |
| | | |
| | | socket->queue = new SHMQueue<shm_msg_t>(socket->port, 16); |
| | |
| | | return NULL; |
| | | } |
| | | |
| | | |
| | | int shm_connect(shm_socket_t *socket, int port) { |
| | | if (socket->socket_type != SHM_SOCKET_STREAM) { |
| | | err_exit(0, "can not invoke shm_connect method with a socket which is not " |
| | |
| | | if (socket->port == -1) { |
| | | socket->port = hashtable_alloc_key(hashtable); |
| | | } else { |
| | | |
| | | if (hashtable_get(hashtable, socket->port) != NULL && !socket->force_bind ) { |
| | | err_exit(0, "key %d has already been in used!", socket->port); |
| | | } |
| | | _shm_socket_check_key(socket); |
| | | } |
| | | |
| | | socket->queue = new SHMQueue<shm_msg_t>(socket->port, 16); |
| | |
| | | socket->port = hashtable_alloc_key(hashtable); |
| | | } else { |
| | | |
| | | if (hashtable_get(hashtable, socket->port) != NULL) { |
| | | if(!socket->force_bind) |
| | | err_exit(0, "key %d has already been in used!", socket->port); |
| | | } |
| | | _shm_socket_check_key(socket); |
| | | } |
| | | |
| | | socket->queue = new SHMQueue<shm_msg_t>(socket->port, 16); |
| | |
| | | socket->port = hashtable_alloc_key(hashtable); |
| | | } else { |
| | | |
| | | if (hashtable_get(hashtable, socket->port) != NULL) { |
| | | if(!socket->force_bind) |
| | | err_exit(0, "key %d has already been in used!", socket->port); |
| | | } |
| | | _shm_socket_check_key(socket); |
| | | } |
| | | |
| | | socket->queue = new SHMQueue<shm_msg_t>(socket->port, 16); |
| | |
| | | return -1; |
| | | } |
| | | |
| | | // ============================================================================================================ |
| | | |
| | | /** |
| | | * 绑定key到队列,但是并不会创建队列。如果没有对应指定key的队列提示错误并退出 |
| | | */ |