| | |
| | | |
| | | }; |
| | | |
| | | enum shm_connection_status_t { |
| | | SHM_CONN_CLOSED=1, |
| | | SHM_CONN_LISTEN=2, |
| | | SHM_CONN_ESTABLISHED=3 |
| | | }; |
| | | |
| | | typedef struct shm_msg_t { |
| | | int port; |
| | | shm_msg_type_t type; |
| | |
| | | typedef struct shm_socket_t { |
| | | // 本地port |
| | | int port; |
| | | shm_connection_status_t status; |
| | | SHMQueue<shm_msg_t> *queue; |
| | | SHMQueue<shm_msg_t> *remoteQueue; |
| | | LockFreeQueue<shm_msg_t, DM_Allocator> *messageQueue; |
| | |
| | | } shm_socket_t; |
| | | |
| | | |
| | | /** |
| | | * 初始化共享内存 |
| | | * @size 共享内存大小, 单位M |
| | | * |
| | | */ |
| | | void shm_init(int size); |
| | | |
| | | /** |
| | | * 销毁共享内存 |
| | | * 整个进程退出时需要执行这个方法,该方法首先会检查是否还有其他进程在使用该共享内存,如果还有其他进程在使用就只是detach,如果没有其他进程在使用则销毁整块内存。 |
| | | */ |
| | | void shm_destroy(); |
| | | |
| | | /** |
| | | * 释放recv方法分配的buf |
| | | */ |
| | | void shm_free(void *buf); |
| | | |
| | | shm_socket_t *shm_open_socket(); |
| | | |
| | |
| | | int shm_close_socket(shm_socket_t * socket) ; |
| | | |
| | | |
| | | int shm_bind(shm_socket_t * socket, int port) ; |
| | | int shm_socket_bind(shm_socket_t * socket, int port) ; |
| | | |
| | | int shm_listen(shm_socket_t * socket) ; |
| | | |
| | |
| | | |
| | | int shm_connect(shm_socket_t * socket, int port); |
| | | |
| | | int shm_send(shm_socket_t * socket, void *buf, int size) ; |
| | | int shm_send(shm_socket_t * socket, const void *buf, const int size) ; |
| | | |
| | | int shm_recv(shm_socket_t * socket, void **buf, int *size) ; |
| | | |