File was renamed from src/socket/mod_socket.c |
| | |
| | | #include "usg_common.h" |
| | | #include "mod_socket.h" |
| | | #include "shm_stream_mod_socket.h" |
| | | #include "shm_socket.h" |
| | | #include "shm_allocator.h" |
| | | #include "mem_pool.h" |
| | |
| | | shm_socket_t *client_socket; |
| | | }mod_entry_t; |
| | | |
| | | typedef struct mod_socket_t { |
| | | typedef struct shm_stream_mod_socket_t { |
| | | socket_mod_t mod; |
| | | shm_socket_t *shm_socket; |
| | | shm_socket_t *client_socket; |
| | |
| | | int items; |
| | | |
| | | |
| | | } mod_socket_t; |
| | | } shm_stream_mod_socket_t; |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | void *mod_open_socket(int mod) { |
| | | mod_socket_t *socket = (mod_socket_t *)malloc(sizeof(mod_socket_t)); |
| | | void *shm_stream_mod_socket_open(int mod) { |
| | | shm_stream_mod_socket_t *socket = (shm_stream_mod_socket_t *)malloc(sizeof(shm_stream_mod_socket_t)); |
| | | socket->shm_socket=shm_open_socket(SHM_SOCKET_STREAM); |
| | | socket->is_server = 0; |
| | | socket->mod = (socket_mod_t)mod; |
| | |
| | | |
| | | |
| | | |
| | | int mod_close_socket(void * _socket){ |
| | | mod_socket_t * socket = (mod_socket_t *) _socket; |
| | | int shm_stream_mod_socket_close(void * _socket){ |
| | | shm_stream_mod_socket_t * socket = (shm_stream_mod_socket_t *) _socket; |
| | | |
| | | if (socket->mod == REQ_REP) { |
| | | SemUtil::remove(socket->slots); |
| | |
| | | |
| | | |
| | | |
| | | int mod_socket_bind(void * _socket, int port){ |
| | | mod_socket_t * socket = (mod_socket_t *) _socket; |
| | | int shm_stream_mod_socket_bind(void * _socket, int port){ |
| | | shm_stream_mod_socket_t * socket = (shm_stream_mod_socket_t *) _socket; |
| | | return shm_socket_bind(socket->shm_socket, port); |
| | | } |
| | | |
| | | void * run_server_recv_client_msg(void *_socket) { |
| | | pthread_detach(pthread_self()); |
| | | mod_socket_t * socket = (mod_socket_t *) _socket; |
| | | shm_stream_mod_socket_t * socket = (shm_stream_mod_socket_t *) _socket; |
| | | shm_socket_t * client_socket = socket->client_socket; |
| | | |
| | | mod_entry_t entry; |
| | |
| | | } |
| | | |
| | | void *run_accept_connection(void * _socket) { |
| | | mod_socket_t * socket = (mod_socket_t *) _socket; |
| | | shm_stream_mod_socket_t * socket = (shm_stream_mod_socket_t *) _socket; |
| | | shm_socket_t *client_socket; |
| | | pthread_t tid; |
| | | while(socket->shm_socket->status == SHM_CONN_LISTEN) { |
| | | //接受客户端的连接请求 |
| | | client_socket = shm_accept(socket->shm_socket); |
| | | |
| | | mod_socket_t *arg = (mod_socket_t *)malloc(sizeof(mod_socket_t)); |
| | | memcpy(arg, _socket, sizeof(mod_socket_t)); |
| | | shm_stream_mod_socket_t *arg = (shm_stream_mod_socket_t *)malloc(sizeof(shm_stream_mod_socket_t)); |
| | | memcpy(arg, _socket, sizeof(shm_stream_mod_socket_t)); |
| | | arg->client_socket = client_socket; |
| | | pthread_create(&tid, NULL, run_server_recv_client_msg , (void *)arg); |
| | | } |
| | | return NULL; |
| | | } |
| | | |
| | | int mod_listen(void * _socket) { |
| | | mod_socket_t * socket = (mod_socket_t *) _socket; |
| | | int shm_stream_mod_socket_listen(void * _socket) { |
| | | shm_stream_mod_socket_t * socket = (shm_stream_mod_socket_t *) _socket; |
| | | pthread_t tid; |
| | | socket->is_server = 1; |
| | | int rv = shm_listen(socket->shm_socket); |
| | |
| | | } |
| | | |
| | | |
| | | int mod_connect(void * _socket, int port) { |
| | | mod_socket_t * socket = (mod_socket_t *) _socket; |
| | | int shm_stream_mod_socket_connect(void * _socket, int port) { |
| | | shm_stream_mod_socket_t * socket = (shm_stream_mod_socket_t *) _socket; |
| | | return shm_connect(socket->shm_socket, port); |
| | | |
| | | } |
| | | |
| | | int mod_send(void * _socket, const void *buf, const int size) { |
| | | mod_socket_t * socket = (mod_socket_t *) _socket; |
| | | int shm_stream_mod_socket_send(void * _socket, const void *buf, const int size) { |
| | | shm_stream_mod_socket_t * socket = (shm_stream_mod_socket_t *) _socket; |
| | | std::map<int, shm_socket_t* > *clientSocketMap = socket->shm_socket->clientSocketMap; |
| | | std::map<int, shm_socket_t* >::iterator iter; |
| | | int rv; |
| | |
| | | |
| | | } |
| | | |
| | | int mod_recv(void * _socket, void **buf, int *size) { |
| | | mod_socket_t * socket = (mod_socket_t *) _socket; |
| | | int shm_stream_mod_socket_recv(void * _socket, void **buf, int *size) { |
| | | shm_stream_mod_socket_t * socket = (shm_stream_mod_socket_t *) _socket; |
| | | mod_entry_t entry; |
| | | |
| | | if(socket->is_server ) { |
| | |
| | | return -1; |
| | | } |
| | | |
| | | int mod_get_socket_port(void * _socket) { |
| | | mod_socket_t * socket = (mod_socket_t *) _socket; |
| | | int shm_stream_mod_socket_get_port(void * _socket) { |
| | | shm_stream_mod_socket_t * socket = (shm_stream_mod_socket_t *) _socket; |
| | | return socket->shm_socket->port; |
| | | } |
| | | |
| | | |
| | | void mod_free(void *buf) { |
| | | void shm_stream_mod_socket_free(void *buf) { |
| | | free(buf); |
| | | } |
| | | |