xref: /f-stack/app/micro_thread/mt_net_api.h (revision 35a81399)
1a9643ea8Slogwang 
2a9643ea8Slogwang /**
3a9643ea8Slogwang  * Tencent is pleased to support the open source community by making MSEC available.
4a9643ea8Slogwang  *
5a9643ea8Slogwang  * Copyright (C) 2016 THL A29 Limited, a Tencent company. All rights reserved.
6a9643ea8Slogwang  *
7a9643ea8Slogwang  * Licensed under the GNU General Public License, Version 2.0 (the "License");
8a9643ea8Slogwang  * you may not use this file except in compliance with the License. You may
9a9643ea8Slogwang  * obtain a copy of the License at
10a9643ea8Slogwang  *
11a9643ea8Slogwang  *     https://opensource.org/licenses/GPL-2.0
12a9643ea8Slogwang  *
13a9643ea8Slogwang  * Unless required by applicable law or agreed to in writing, software distributed under the
14a9643ea8Slogwang  * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
15a9643ea8Slogwang  * either express or implied. See the License for the specific language governing permissions
16a9643ea8Slogwang  * and limitations under the License.
17a9643ea8Slogwang  */
18a9643ea8Slogwang 
19a9643ea8Slogwang 
20a9643ea8Slogwang /**
21a9643ea8Slogwang  *  @file mt_net_api.h
22a9643ea8Slogwang  **/
23a9643ea8Slogwang 
24a9643ea8Slogwang #ifndef __MT_NET_API_H__
25a9643ea8Slogwang #define __MT_NET_API_H__
26a9643ea8Slogwang 
27a9643ea8Slogwang #include <netinet/in.h>
28a9643ea8Slogwang 
29a9643ea8Slogwang namespace NS_MICRO_THREAD {
30a9643ea8Slogwang 
31a9643ea8Slogwang enum MT_PROTO_TYPE
32a9643ea8Slogwang {
33a9643ea8Slogwang     NET_PROTO_UNDEF      = 0,
34*35a81399Slogwang     NET_PROTO_UDP        = 0x1,
35*35a81399Slogwang     NET_PROTO_TCP        = 0x2
36a9643ea8Slogwang };
37a9643ea8Slogwang 
38a9643ea8Slogwang enum MT_RC_TYPE
39a9643ea8Slogwang {
40a9643ea8Slogwang     RC_SUCCESS          = 0,
41*35a81399Slogwang     RC_ERR_SOCKET       = -1,
42*35a81399Slogwang     RC_SEND_FAIL        = -2,
43*35a81399Slogwang     RC_RECV_FAIL        = -3,
44*35a81399Slogwang     RC_CONNECT_FAIL     = -4,
45*35a81399Slogwang     RC_CHECK_PKG_FAIL   = -5,
46*35a81399Slogwang     RC_NO_MORE_BUFF     = -6,
47*35a81399Slogwang     RC_REMOTE_CLOSED    = -7,
48a9643ea8Slogwang 
49*35a81399Slogwang     RC_INVALID_PARAM    = -10,
50*35a81399Slogwang     RC_INVALID_HANDLER  = -11,
51*35a81399Slogwang     RC_MEM_ERROR        = -12,
52*35a81399Slogwang     RC_CONFLICT_SID     = -13,
53*35a81399Slogwang     RC_KQUEUE_ERROR     = -14,
54a9643ea8Slogwang };
55a9643ea8Slogwang 
56a9643ea8Slogwang typedef int32_t (*CHECK_SESSION_CALLBACK)(const void* data, uint32_t len,
57a9643ea8Slogwang                                         uint64_t* session_id, uint32_t* need_len);
58a9643ea8Slogwang 
59a9643ea8Slogwang class CNetHelper
60a9643ea8Slogwang {
61a9643ea8Slogwang public:
62a9643ea8Slogwang 
63a9643ea8Slogwang     static char* GetErrMsg(int32_t result);
64a9643ea8Slogwang 
65a9643ea8Slogwang     int32_t SendRecv(void* data, uint32_t len, uint32_t timeout);
66a9643ea8Slogwang 
67a9643ea8Slogwang     void* GetRspBuff();
68a9643ea8Slogwang 
69a9643ea8Slogwang     uint32_t GetRspLen();
70a9643ea8Slogwang 
71a9643ea8Slogwang     void SetProtoType(MT_PROTO_TYPE type);
72a9643ea8Slogwang 
73a9643ea8Slogwang     void SetDestAddress(struct sockaddr_in* dst);
74a9643ea8Slogwang 
75a9643ea8Slogwang     void SetSessionId(uint64_t sid);
76a9643ea8Slogwang 
77a9643ea8Slogwang     void SetSessionCallback(CHECK_SESSION_CALLBACK function);
78a9643ea8Slogwang 
79a9643ea8Slogwang     CNetHelper();
80a9643ea8Slogwang     ~CNetHelper();
81a9643ea8Slogwang 
82a9643ea8Slogwang private:
83a9643ea8Slogwang 
84*35a81399Slogwang     void*    handler;
85a9643ea8Slogwang };
86a9643ea8Slogwang 
87a9643ea8Slogwang 
88a9643ea8Slogwang }
89a9643ea8Slogwang 
90a9643ea8Slogwang #endif
91a9643ea8Slogwang 
92a9643ea8Slogwang 
93