summaryrefslogtreecommitdiff
path: root/include/MESA/MESA_tcp_interface.h
diff options
context:
space:
mode:
author[email protected] <[email protected]>2021-11-02 12:34:05 +0800
committer[email protected] <[email protected]>2021-11-02 12:34:05 +0800
commit31f55f0b88d4af34a8a36497f5e49c69b88b2fbf (patch)
tree63515b3ceb361369cdc88ae6db1a808fc80e5b42 /include/MESA/MESA_tcp_interface.h
Diffstat (limited to 'include/MESA/MESA_tcp_interface.h')
-rw-r--r--include/MESA/MESA_tcp_interface.h174
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