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