1 /* 2 * Copyright (c) 2021-2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 #ifndef SOFTBUS_DEF_H 16 #define SOFTBUS_DEF_H 17 18 #include <pthread.h> 19 #include "common_list.h" 20 #include "softbus_adapter_thread.h" 21 #include "stdint.h" 22 23 24 #ifdef __cplusplus 25 #if __cplusplus 26 extern "C" { 27 #endif 28 #endif 29 30 #ifndef NO_SANITIZE 31 #ifdef __has_attribute 32 #if __has_attribute(no_sanitize) 33 #define NO_SANITIZE(type) __attribute__((no_sanitize(type))) 34 #endif 35 #endif 36 #endif 37 38 #ifndef NO_SANITIZE 39 #define NO_SANITIZE(type) 40 #endif 41 42 #define INVALID_SESSION_ID (-1) 43 #define INVALID_CHANNEL_ID (-1) 44 #define INVALID_ROUTE_TYPE (-1) 45 #define INVALID_DATA_CONFIG (0) 46 #define INVALID_SEQ_ID (0x7fffffff) 47 #define INVALID_ACTION_ID 0 48 49 #define PKG_NAME_SIZE_MAX 65 50 #define SESSION_NAME_SIZE_MAX 256 51 #define DEVICE_ID_SIZE_MAX 65 52 #define DEVICE_VERSION_SIZE_MAX 128 53 #define GROUP_ID_SIZE_MAX 128 54 #define REQ_ID_SIZE_MAX 65 55 #define AUTH_STATE_SIZE_MAX 65 56 #define FILE_RECV_ROOT_DIR_SIZE_MAX 256 57 58 #define MAX_DEV_INFO_VALUE_LEN 65 59 #define MAX_CAPABILITY_LEN 33 60 #define MAX_CAPABILITY_DATA_LEN 512 61 #define MAX_PACKAGE_NAME_LEN 33 62 #define MAX_DEV_INFO_COUNT 32 63 #define MAX_PUBLISH_INFO_COUNT 32 64 #define IP_LEN 46 65 #define MAX_PEERS_NUM 32 66 #define MAX_OPERATION_CODE_LEN 32 67 #define SESSION_KEY_LENGTH 32 68 #define DEVICE_KEY_LEN 16 69 70 #define MAX_SOCKET_ADDR_LEN 46 71 72 #define MAX_SESSION_ID 20 73 #define MAX_SESSION_SERVER_NUMBER 32 74 75 #define WAIT_SERVER_READY_INTERVAL 200 76 77 #define NODE_ADDR_LOOPBACK "0" 78 79 #define MAX_UDP_CHANNEL_ID_COUNT 20 80 81 #ifndef ARRAY_SIZE 82 #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) 83 #endif 84 85 #define FILE_PRIORITY_BE 0x00 86 #define FILE_PRIORITY_BK 0x08 87 88 typedef struct { 89 SoftBusMutex lock; 90 unsigned int cnt; 91 ListNode list; 92 } SoftBusList; 93 94 typedef enum { 95 SEC_TYPE_UNKNOWN = 0, 96 SEC_TYPE_PLAINTEXT = 1, 97 SEC_TYPE_CIPHERTEXT = 2, 98 } SoftBusSecType; 99 100 /* Timer type */ 101 enum { 102 TIMER_TYPE_ONCE, 103 TIMER_TYPE_PERIOD, 104 TIMER_TYPE_MAX, 105 }; 106 107 typedef enum { 108 TRANS_SESSION_BYTES = 0, 109 TRANS_SESSION_ACK, 110 TRANS_SESSION_MESSAGE, 111 TRANS_SESSION_FILE_FIRST_FRAME = 3, 112 TRANS_SESSION_FILE_ONGOINE_FRAME, 113 TRANS_SESSION_FILE_LAST_FRAME, 114 TRANS_SESSION_FILE_ONLYONE_FRAME, 115 TRANS_SESSION_FILE_ALLFILE_SENT, 116 TRANS_SESSION_FILE_CRC_CHECK_FRAME, 117 TRANS_SESSION_FILE_RESULT_FRAME, 118 TRANS_SESSION_FILE_ACK_REQUEST_SENT, 119 TRANS_SESSION_FILE_ACK_RESPONSE_SENT, 120 TRANS_SESSION_ASYNC_MESSAGE, 121 } SessionPktType; 122 123 typedef enum { 124 CHANNEL_TYPE_UNDEFINED = -1, 125 CHANNEL_TYPE_TCP_DIRECT = 0, 126 CHANNEL_TYPE_PROXY, 127 CHANNEL_TYPE_UDP, 128 CHANNEL_TYPE_AUTH, 129 CHANNEL_TYPE_BUTT, 130 } ChannelType; 131 132 typedef enum { 133 MESSAGE_TYPE_UNDEFINED = -1, 134 MESSAGE_TYPE_NOMAL = 0, 135 MESSAGE_TYPE_CLOSE_ACK, 136 MESSAGE_TYPE_BUTT, 137 } MessageType; 138 139 typedef enum { 140 BUSINESS_TYPE_MESSAGE = 1, 141 BUSINESS_TYPE_BYTE = 2, 142 BUSINESS_TYPE_FILE = 3, 143 BUSINESS_TYPE_STREAM = 4, 144 145 BUSINESS_TYPE_NOT_CARE, 146 BUSINESS_TYPE_BUTT, 147 } BusinessType; 148 149 typedef struct { 150 int32_t channelId; 151 int32_t channelType; 152 int32_t businessType; 153 int32_t fd; 154 bool isServer; 155 bool isEnabled; 156 bool isEncrypt; 157 int32_t peerUid; 158 int32_t peerPid; 159 char *groupId; 160 uint32_t keyLen; 161 char *sessionKey; 162 char *peerSessionName; 163 char *peerDeviceId; 164 char *myIp; 165 char *peerIp; 166 int32_t peerPort; 167 int32_t routeType; 168 int32_t streamType; 169 int32_t encrypt; 170 int32_t fileEncrypt; 171 int32_t algorithm; 172 int32_t crc; 173 int32_t autoCloseTime; 174 bool isUdpFile; 175 int myHandleId; 176 int peerHandleId; 177 char *reqId; 178 int64_t timeStart; 179 int32_t linkType; 180 int32_t connectType; 181 bool isFastData; 182 uint32_t dataConfig; 183 uint64_t laneId; 184 int32_t osType; 185 } ChannelInfo; 186 187 #ifdef __cplusplus 188 #if __cplusplus 189 } 190 #endif /* __cplusplus */ 191 #endif /* __cplusplus */ 192 #endif /* SOFTBUS_DEF_H */ 193 194