1 /*
2 * Copyright (c) 2021 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
16 #include "client_trans_channel_manager.h"
17
18 #include "client_trans_auth_manager.h"
19 #include "client_trans_proxy_manager.h"
20 #include "client_trans_session_callback.h"
21 #include "client_trans_tcp_direct_manager.h"
22 #include "client_trans_tcp_direct_message.h"
23 #include "client_trans_udp_manager.h"
24 #include "softbus_errcode.h"
25 #include "softbus_log.h"
26
ClientTransChannelInit(void)27 int32_t ClientTransChannelInit(void)
28 {
29 IClientSessionCallBack *cb = GetClientSessionCb();
30 if (cb == NULL) {
31 return SOFTBUS_ERR;
32 }
33 if (TransTdcManagerInit(cb) != SOFTBUS_OK) {
34 SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "trans tcp direct manager init failed.");
35 return SOFTBUS_ERR;
36 }
37 if (ClientTransAuthInit(cb) != SOFTBUS_OK) {
38 return SOFTBUS_ERR;
39 }
40 if (ClinetTransProxyInit(cb) != SOFTBUS_OK) {
41 return SOFTBUS_ERR;
42 }
43 if (ClientTransUdpMgrInit(cb) != SOFTBUS_OK) {
44 return SOFTBUS_ERR;
45 }
46 return SOFTBUS_OK;
47 }
48
ClientTransChannelDeinit(void)49 void ClientTransChannelDeinit(void)
50 {
51 TransTdcManagerDeinit();
52 ClientTransUdpMgrDeinit();
53 ClientTransProxyDeinit();
54 }
55
ClientTransCloseChannel(int32_t channelId,int32_t type)56 int32_t ClientTransCloseChannel(int32_t channelId, int32_t type)
57 {
58 if (channelId < 0) {
59 SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "ClientTransCloseChannel Invalid param");
60 return SOFTBUS_INVALID_PARAM;
61 }
62 int32_t ret = SOFTBUS_OK;
63 switch (type) {
64 case CHANNEL_TYPE_PROXY:
65 ClientTransProxyCloseChannel(channelId);
66 break;
67 case CHANNEL_TYPE_TCP_DIRECT:
68 TransDelDataBufNode(channelId);
69 TransTdcCloseChannel(channelId);
70 break;
71 case CHANNEL_TYPE_UDP:
72 ret = ClientTransCloseUdpChannel(channelId);
73 break;
74 case CHANNEL_TYPE_AUTH:
75 ClientTransAuthCloseChannel(channelId);
76 break;
77 default:
78 SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "ClientTransCloseChannel Invalid type");
79 return SOFTBUS_TRANS_INVALID_CHANNEL_TYPE;
80 }
81 return ret;
82 }
83
ClientTransChannelSendBytes(int32_t channelId,int32_t type,const void * data,uint32_t len)84 int32_t ClientTransChannelSendBytes(int32_t channelId, int32_t type, const void *data, uint32_t len)
85 {
86 if ((data == NULL) || (len == 0)) {
87 SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "ClientTransChannelSendBytes Invalid param");
88 return SOFTBUS_INVALID_PARAM;
89 }
90
91 int32_t ret = SOFTBUS_OK;
92 switch (type) {
93 case CHANNEL_TYPE_AUTH:
94 ret = TransAuthChannelSendBytes(channelId, data, len);
95 break;
96 case CHANNEL_TYPE_PROXY:
97 ret = TransProxyChannelSendBytes(channelId, data, len);
98 break;
99 case CHANNEL_TYPE_TCP_DIRECT:
100 ret = TransTdcSendBytes(channelId, data, len);
101 break;
102 default:
103 SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "ClientTransChannelSendBytes Invalid type");
104 return SOFTBUS_ERR;
105 }
106 return ret;
107 }
108
ClientTransChannelSendMessage(int32_t channelId,int32_t type,const void * data,uint32_t len)109 int32_t ClientTransChannelSendMessage(int32_t channelId, int32_t type, const void *data, uint32_t len)
110 {
111 if ((data == NULL) || (len == 0)) {
112 SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "ClientTransChannelSendMessage Invalid param.");
113 return SOFTBUS_INVALID_PARAM;
114 }
115
116 int32_t ret = SOFTBUS_OK;
117 switch (type) {
118 case CHANNEL_TYPE_AUTH:
119 ret = TransAuthChannelSendMessage(channelId, data, len);
120 break;
121 case CHANNEL_TYPE_PROXY:
122 ret = TransProxyChannelSendMessage(channelId, data, len);
123 break;
124 case CHANNEL_TYPE_TCP_DIRECT:
125 ret = TransTdcSendMessage(channelId, data, len);
126 break;
127 default:
128 SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "ClientTransChannelSendMessage Invalid type.");
129 return SOFTBUS_TRANS_CHANNEL_TYPE_INVALID;
130 }
131 return ret;
132 }
133
ClientTransChannelSendStream(int32_t channelId,int32_t type,const StreamData * data,const StreamData * ext,const StreamFrameInfo * param)134 int32_t ClientTransChannelSendStream(int32_t channelId, int32_t type, const StreamData *data,
135 const StreamData *ext, const StreamFrameInfo *param)
136 {
137 if ((data == NULL) || (ext == NULL) || (param == NULL)) {
138 SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "ClientTransChannelSendStream Invalid param");
139 return SOFTBUS_INVALID_PARAM;
140 }
141
142 int32_t ret = SOFTBUS_OK;
143 switch (type) {
144 case CHANNEL_TYPE_UDP:
145 ret = TransUdpChannelSendStream(channelId, data, ext, param);
146 break;
147 default:
148 SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "ClientTransChannelSendStream unsupport ctype[%d].", type);
149 return SOFTBUS_TRANS_CHANNEL_TYPE_INVALID;
150 }
151 return ret;
152 }
153
ClientTransChannelSendFile(int32_t channelId,int32_t type,const char * sFileList[],const char * dFileList[],uint32_t fileCnt)154 int32_t ClientTransChannelSendFile(int32_t channelId, int32_t type, const char *sFileList[],
155 const char *dFileList[], uint32_t fileCnt)
156 {
157 int32_t ret = SOFTBUS_OK;
158 switch (type) {
159 case CHANNEL_TYPE_UDP:
160 ret = TransUdpChannelSendFile(channelId, sFileList, dFileList, fileCnt);
161 break;
162 case CHANNEL_TYPE_PROXY:
163 ret = TransProxyChannelSendFile(channelId, sFileList, dFileList, fileCnt);
164 break;
165 default:
166 SoftBusLog(SOFTBUS_LOG_TRAN, SOFTBUS_LOG_ERROR, "ClientTransChannelSendFile unsupport ctype[%d].", type);
167 return SOFTBUS_TRANS_CHANNEL_TYPE_INVALID;
168 }
169 return ret;
170 }
171
DeleteFileListener(const char * sessionName)172 void DeleteFileListener(const char *sessionName)
173 {
174 TransUdpDeleteFileListener(sessionName);
175 }
176
ClientGetSessionKey(int32_t channelId,char * key,unsigned int len)177 int32_t ClientGetSessionKey(int32_t channelId, char *key, unsigned int len)
178 {
179 return TransTdcGetSessionKey(channelId, key, len);
180 }
181
ClientGetHandle(int32_t channelId,int * handle)182 int32_t ClientGetHandle(int32_t channelId, int *handle)
183 {
184 return TransTdcGetHandle(channelId, handle);
185 }
186
ClientDisableSessionListener(int32_t channelId)187 int32_t ClientDisableSessionListener(int32_t channelId)
188 {
189 return TransDisableSessionListener(channelId);
190 }