diff options
| author | [email protected] <[email protected]> | 2021-11-02 12:34:05 +0800 |
|---|---|---|
| committer | [email protected] <[email protected]> | 2021-11-02 12:34:05 +0800 |
| commit | 31f55f0b88d4af34a8a36497f5e49c69b88b2fbf (patch) | |
| tree | 63515b3ceb361369cdc88ae6db1a808fc80e5b42 /include/MESA/MESA_tcp_interface.h | |
Diffstat (limited to 'include/MESA/MESA_tcp_interface.h')
| -rw-r--r-- | include/MESA/MESA_tcp_interface.h | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/include/MESA/MESA_tcp_interface.h b/include/MESA/MESA_tcp_interface.h new file mode 100644 index 0000000..5d95258 --- /dev/null +++ b/include/MESA/MESA_tcp_interface.h @@ -0,0 +1,174 @@ +#ifndef MESA_TCP_INTERFACE_H__ +#define MESA_TCP_INTERFACE_H__ + +#ifdef __cplusplus +extern "C" +{ +#endif + +#include <stdint.h> + +/*the optype for MESA_tcp_set*/ +#define MESA_TCP_IO_MODE (0) /*uint32_t, 1: block; 0:nonblock,Ĭ��:1*/ +#define MESA_TCP_L_PORT (1) /*uint16_t, �����˿�*/ +#define MESA_TCP_RUNTIME_LOG (2) /*void *, ��־�����֧����־���,Ĭ��:NULL*/ +#define MESA_TCP_SOCKHD_LIMIT (3) /*uint32_t, ����sock�������,Ĭ��:1024*/ +#define MESA_TCP_LIMITE_SEND_CACHE (4) /*uint32_t, ���ӷ��ͻ�������С,��λ:B ,Ĭ��:10M*/ +#define MESA_TCP_LIMITE_RECV_CACHE (5) /*uint32_t,���ӽ��ջ�������С,��λ:B ,Ĭ��:10M*/ +#define MESA_TCP_SEND_PTHREAD_AMOUNT (6) /*uint32_t, �����߳���Ĭ��:1*/ +#define MESA_TCP_RECV_PTHREAD_AMOUNT (7) /*uint32_t, �����߳���Ĭ��:1*/ +#define MESA_TCP_CONNECT_TIME (8) /* uint32_t, ���ӳ�ʱ, ��λ:s , Ĭ��:5s*/ +#define MESA_TCP_HIGH_SPEED_SEND (9) /*1:on, 0:off,Ĭ��:0*/ +#define MESA_TCP_C_PORT (10) /*uint16_t, �ͷ��˰˿�*/ +#define MESA_TCP_SEND_TIME_OUT (11) /*uint32_t, ���ӷ��ͳ�ʱ��Ĭ��Ϊ0*/ +#define MESA_TCP_RECV_TIME_OUT (12) /*uint32_t,���ӽ��ճ�ʱ,Ĭ��Ϊ0*/ + + +/*ʹ��mesa_tcp_recv_v1 ʱϣ���������Ĵ�С*/ +#define MESA_TCP_RECV_LEN (1024*2) + + +/*the value for the MESA_tcp_set*/ +#define MESA_TCP_MOD_BLOCK 1 +#define MESA_TCP_MOD_NONBLOCK 0 + +typedef void * MESA_tcp_handle; + + + enum mesa_tcp_state { + MESA_TCP_STATE_CREATE = 0, + MESA_TCP_STATE_ACCEPT, //��һ�ε���recv + MESA_TCP_STATE_CONTENT, //�������� + MESA_TCP_STATE_CLOSE, //���������ر� + MESA_TCP_STATE_DISTORY, //���ӱ����ر� + MESA_TCP_STATE_TIME_OUT //���ӽ��ճ�ʱ +// MESA_TCP_STATE_WAIT +// MESA_TCP_STATE_RECONTENT +}; + + enum mesa_tcp_peer { + MESA_TCP_PEER_CHUNK_SIZE = 0, /*int */ + MESA_TCP_PEER_CONTEXT , /*void */ + MESA_TCP_PEER_CONTEXT_FREE /*peer_context_free_t */ +}; + +typedef struct _mesa_tcp_snipping_ +{ + int32_t len; + void *data; +}meta_tcp_snipping_t; + +typedef struct _mesa_chunk_ +{ + uint32_t ip; + uint16_t port; + void *data; + uint32_t data_len; + void *peer_context; + enum mesa_tcp_state tcp_state; +}mesa_chunk_t; + +typedef void peer_context_free_t(void *arg); + +/* + * return value: NULL is init fail +*/ +MESA_tcp_handle MESA_tcp_init (void); + +/* + * return: 0: succ < 0:fail + * -8: Opttype����δ֪ +*/ +int MESA_tcp_set ( MESA_tcp_handle handle,int optype, void* value); +int MESA_tcp_send (MESA_tcp_handle handle, + uint32_t dst_ip, uint16_t dst_port, + void* pmsg, int msglen, + int thread_id); +int MESA_tcp_send_snipping (MESA_tcp_handle handle, + uint32_t dst_ip, uint16_t dst_port, + meta_tcp_snipping_t *snip, int32_t sn_n, + int thread_id); + +/* + * return: > 0: succ + * == 0: ��ʾ���ճ�ʱ + * < 0:fail + * -1:�������� + * -3:���ӱ����ر� + * -5: �߳�ID��������ֵ + * -9:MESA_tcp_recv_chunk��MESA_tcp_recvͬʱ��ʹ�� +*/ +int MESA_tcp_recv (MESA_tcp_handle handle, + void* msgbuf, int buflen, + uint32_t* src_ip, uint16_t* src_port); + +/* + * return: 0: succ + * < 0:fail + * -1:�������� + * -5: �߳�ID��������ֵ + * -9:MESA_tcp_recv_chunk��MESA_tcp_recvͬʱ��ʹ�� +*/ +int MESA_tcp_recv_chunk(MESA_tcp_handle handle, + uint32_t *ip, uint16_t *port, + void **data_chunk, uint32_t *data_len, + enum mesa_tcp_state *tcp_state, void **peer_context, + uint32_t pthread_id); +int MESA_tcp_r_chunk (MESA_tcp_handle handle, uint32_t pthread_id, mesa_chunk_t *out); +void MESA_tcp_chunk_free (void *data); +int MESA_tcp_set_peer(MESA_tcp_handle handle, + uint32_t ip, uint16_t port, + enum mesa_tcp_peer optype, + char* data,int datalen); +int MESA_tcp_withdraw (MESA_tcp_handle handle, + uint32_t ip , uint32_t port, + void *data, uint32_t data_len); +int MESA_tcp_getlasterror (MESA_tcp_handle handle, + char* msgbuf, int msg_len, + uint32_t ip, uint16_t port); +int MESA_tcp_close (MESA_tcp_handle handle, + uint32_t ip, uint16_t port, + int time_out, + int tid); +int MESA_tcp_destroy (MESA_tcp_handle handle); + + +long MESA_tcp_get_memory_size (MESA_tcp_handle handle); +int MESA_tcp_get_local_ip (MESA_tcp_handle handle); + +/* + ip,port ���������ֽ��� +*/ +MESA_tcp_handle MESA_tcp_init_v1 (void); +int MESA_tcp_set_v1 ( MESA_tcp_handle handle,int optype, void* value); + +/* +return value: + -1, add hash fail + -2, connect fail + -3, tcp interlinkage is broke + -4, epoll mod event fail + -5, limits thread amount + -6, limit buffer size +*/ +int MESA_tcp_send_v1 (MESA_tcp_handle handle, + uint32_t dst_ip, uint16_t dst_port, + void* pmsg, int msglen); + +/* + ֻ֧�ֵ��̵߳��á� +*/ +int MESA_tcp_recv_v1 (MESA_tcp_handle handle, + void* msgbuf, int buflen, + uint32_t* src_ip, uint16_t* src_port); +int MESA_tcp_close_v1 (MESA_tcp_handle handle, uint32_t ip, uint16_t port); +int MESA_tcp_getlasterror_v1 (MESA_tcp_handle handle, + char* msgbuf, int msg_len, + uint32_t ip, uint16_t port); +int MESA_tcp_destroy_v1 (MESA_tcp_handle handle); + +#ifdef __cplusplus +} +#endif + +#endif |
