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
16 #include "trans_server_proxy_standard.h"
17
18 #include "ipc_skeleton.h"
19 #include "softbus_error_code.h"
20 #include "softbus_server_ipc_interface_code.h"
21 #include "trans_log.h"
22
23 #define WRITE_PARCEL_WITH_RET(parcel, type, data, retval) \
24 do { \
25 if (!(parcel).Write##type(data)) { \
26 TRANS_LOGE(TRANS_SDK, "write data failed."); \
27 return (retval); \
28 } \
29 } while (false)
30
31 #define CHANNEL_TYPE_UNDEFINED (-1)
32
33 namespace OHOS {
34 static uint32_t g_getSystemAbilityId = 2;
35 const std::u16string SAMANAGER_INTERFACE_TOKEN = u"ohos.samgr.accessToken";
GetSystemAbility()36 static sptr<IRemoteObject> GetSystemAbility()
37 {
38 MessageParcel data;
39
40 if (!data.WriteInterfaceToken(SAMANAGER_INTERFACE_TOKEN)) {
41 return nullptr;
42 }
43
44 data.WriteInt32(SOFTBUS_SERVER_SA_ID_INNER);
45 MessageParcel reply;
46 MessageOption option;
47 sptr<IRemoteObject> samgr = IPCSkeleton::GetContextObject();
48 if (samgr == nullptr) {
49 TRANS_LOGE(TRANS_SDK, "Get samgr failed!");
50 return nullptr;
51 }
52 int32_t err = samgr->SendRequest(g_getSystemAbilityId, data, reply, option);
53 if (err != SOFTBUS_OK) {
54 TRANS_LOGE(TRANS_SDK, "Get GetSystemAbility failed!");
55 return nullptr;
56 }
57 return reply.ReadRemoteObject();
58 }
59
SoftbusRegisterService(const char * clientPkgName,const sptr<IRemoteObject> & object)60 int32_t TransServerProxy::SoftbusRegisterService(const char *clientPkgName, const sptr<IRemoteObject> &object)
61 {
62 (void)clientPkgName;
63 (void)object;
64 return SOFTBUS_OK;
65 }
66
CreateSessionServer(const char * pkgName,const char * sessionName,uint64_t timestamp)67 int32_t TransServerProxy::CreateSessionServer(const char *pkgName, const char *sessionName, uint64_t timestamp)
68 {
69 if (pkgName == nullptr || sessionName == nullptr) {
70 return SOFTBUS_INVALID_PARAM;
71 }
72 sptr<IRemoteObject> remote = GetSystemAbility();
73 if (remote == nullptr) {
74 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
75 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
76 }
77
78 MessageParcel data;
79 if (!data.WriteInterfaceToken(GetDescriptor())) {
80 TRANS_LOGE(TRANS_SDK, "write InterfaceToken failed!");
81 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
82 }
83 if (!data.WriteCString(pkgName)) {
84 TRANS_LOGE(TRANS_SDK, "write pkg name failed!");
85 return SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED;
86 }
87 if (!data.WriteCString(sessionName)) {
88 TRANS_LOGE(TRANS_SDK, "write session name failed!");
89 return SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED;
90 }
91 if (!data.WriteUint64(timestamp)) {
92 TRANS_LOGE(TRANS_SDK, "write timestamp failed!");
93 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
94 }
95 MessageParcel reply;
96 MessageOption option;
97 int32_t ret = remote->SendRequest(SERVER_CREATE_SESSION_SERVER, data, reply, option);
98 if (ret != SOFTBUS_OK) {
99 TRANS_LOGE(TRANS_SDK, "send request failed! ret=%{public}d", ret);
100 return ret;
101 }
102 int32_t serverRet = 0;
103 if (!reply.ReadInt32(serverRet)) {
104 TRANS_LOGE(TRANS_SDK, "read serverRet failed!");
105 return SOFTBUS_TRANS_PROXY_READINT_FAILED;
106 }
107 return serverRet;
108 }
109
RemoveSessionServer(const char * pkgName,const char * sessionName,uint64_t timestamp)110 int32_t TransServerProxy::RemoveSessionServer(const char *pkgName, const char *sessionName, uint64_t timestamp)
111 {
112 if (pkgName == nullptr || sessionName == nullptr) {
113 return SOFTBUS_INVALID_PARAM;
114 }
115 sptr<IRemoteObject> remote = GetSystemAbility();
116 if (remote == nullptr) {
117 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
118 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
119 }
120
121 MessageParcel data;
122 if (!data.WriteInterfaceToken(GetDescriptor())) {
123 TRANS_LOGE(TRANS_SDK, "write InterfaceToken failed!");
124 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
125 }
126 if (!data.WriteCString(pkgName)) {
127 TRANS_LOGE(TRANS_SDK, "write pkg name failed!");
128 return SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED;
129 }
130 if (!data.WriteCString(sessionName)) {
131 TRANS_LOGE(TRANS_SDK, "session name failed!");
132 return SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED;
133 }
134 if (!data.WriteUint64(timestamp)) {
135 TRANS_LOGE(TRANS_SDK, "write timestamp failed!");
136 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
137 }
138 MessageParcel reply;
139 MessageOption option;
140 int32_t ret = remote->SendRequest(SERVER_REMOVE_SESSION_SERVER, data, reply, option);
141 if (ret != SOFTBUS_OK) {
142 TRANS_LOGE(TRANS_SDK, "send request failed! ret=%{public}d", ret);
143 return ret;
144 }
145 int32_t serverRet = 0;
146 if (!reply.ReadInt32(serverRet)) {
147 TRANS_LOGE(TRANS_SDK, "read serverRet failed!");
148 return SOFTBUS_TRANS_PROXY_READINT_FAILED;
149 }
150 return serverRet;
151 }
152
ReleaseResources(int32_t channelId)153 int32_t TransServerProxy::ReleaseResources(int32_t channelId)
154 {
155 sptr<IRemoteObject> remote = GetSystemAbility();
156 if (remote == nullptr) {
157 TRANS_LOGD(TRANS_SDK, "remote is nullptr!");
158 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
159 }
160 MessageParcel data;
161 if (!data.WriteInterfaceToken(GetDescriptor())) {
162 TRANS_LOGE(TRANS_SDK, "failed to write InterfaceToken");
163 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
164 }
165 if (!data.WriteInt32(channelId)) {
166 TRANS_LOGE(TRANS_SDK, "failed to write channelId");
167 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
168 }
169
170 MessageParcel reply;
171 MessageOption option;
172 int32_t ret = remote->SendRequest(SERVER_RELEASE_RESOURCES, data, reply, option);
173 if (ret != SOFTBUS_OK) {
174 TRANS_LOGE(TRANS_SDK, "failed to send request ret=%{public}d", ret);
175 return ret;
176 }
177 int32_t serverRet = 0;
178 if (!reply.ReadInt32(serverRet)) {
179 TRANS_LOGE(TRANS_SDK, "failed to read serverRet failed");
180 return SOFTBUS_TRANS_PROXY_READINT_FAILED;
181 }
182 return SOFTBUS_OK;
183 }
184
TransWriteSessionAttrs(const SessionAttribute * attrs,MessageParcel & data)185 static bool TransWriteSessionAttrs(const SessionAttribute *attrs, MessageParcel &data)
186 {
187 if (attrs == nullptr) {
188 TRANS_LOGE(TRANS_SDK, "attrs is nullptr!");
189 return false;
190 }
191
192 if (!data.WriteInt32(attrs->dataType)) {
193 TRANS_LOGE(TRANS_SDK, "OpenSession write my attrs dataType failed!");
194 return false;
195 }
196
197 if (!data.WriteInt32(attrs->linkTypeNum)) {
198 TRANS_LOGE(TRANS_SDK, "OpenSession write my attrs linkTypeNum failed!");
199 return false;
200 }
201
202 if (attrs->linkTypeNum > 0) {
203 if (!data.WriteBuffer(attrs->linkType, sizeof(LinkType) * attrs->linkTypeNum)) {
204 TRANS_LOGE(TRANS_SDK, "OpenSession write my attrs linkType failed!");
205 return false;
206 }
207 }
208
209 if (!data.WriteInt32(attrs->attr.streamAttr.streamType)) {
210 TRANS_LOGE(TRANS_SDK, "OpenSession write my attrs streamAttr failed!");
211 return false;
212 }
213
214 if (attrs->fastTransData != nullptr && attrs->fastTransDataSize > 0) {
215 if (!data.WriteUint16(attrs->fastTransDataSize)) {
216 TRANS_LOGE(TRANS_SDK, "OpenSession write my attrs fastTransDataSize failed!");
217 return false;
218 }
219 if (!data.WriteRawData(attrs->fastTransData, attrs->fastTransDataSize)) {
220 TRANS_LOGE(TRANS_SDK, "OpenSession write my attrs fastTransData failed!");
221 return false;
222 }
223 } else {
224 if (!data.WriteUint16(0)) {
225 TRANS_LOGE(TRANS_SDK, "OpenSession write my attrs fastTransDataSize failed!");
226 return false;
227 }
228 }
229
230 return true;
231 }
232
WriteQosInfo(const SessionParam * param,MessageParcel & data)233 static bool WriteQosInfo(const SessionParam *param, MessageParcel &data)
234 {
235 if (!data.WriteBool(param->isQosLane)) {
236 TRANS_LOGE(TRANS_SDK, "OpenSession write qos flag failed!");
237 return false;
238 }
239
240 if (!param->isQosLane) {
241 return true;
242 }
243
244 if (!data.WriteUint32(param->qosCount)) {
245 TRANS_LOGE(TRANS_SDK, "OpenSession write count of qos failed!");
246 return false;
247 }
248
249 if (param->qosCount > 0) {
250 if (!data.WriteBuffer(param->qos, sizeof(QosTV) * param->qosCount)) {
251 TRANS_LOGE(TRANS_SDK, "OpenSession write qos info failed!");
252 return false;
253 }
254 }
255
256 return true;
257 }
258
OpenSession(const SessionParam * param,TransInfo * info)259 int32_t TransServerProxy::OpenSession(const SessionParam *param, TransInfo *info)
260 {
261 if (param->sessionName == nullptr || param->peerSessionName == nullptr ||
262 param->peerDeviceId == nullptr || param->groupId == nullptr) {
263 return SOFTBUS_INVALID_PARAM;
264 }
265 sptr<IRemoteObject> remote = GetSystemAbility();
266 if (remote == nullptr) {
267 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
268 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
269 }
270
271 MessageParcel data;
272 if (!data.WriteInterfaceToken(GetDescriptor())) {
273 TRANS_LOGE(TRANS_SDK, "OpenSession write InterfaceToken failed!");
274 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
275 }
276 WRITE_PARCEL_WITH_RET(data, CString, param->sessionName, SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED);
277 WRITE_PARCEL_WITH_RET(data, CString, param->peerSessionName, SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED);
278 WRITE_PARCEL_WITH_RET(data, CString, param->peerDeviceId, SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED);
279 WRITE_PARCEL_WITH_RET(data, CString, param->groupId, SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED);
280 WRITE_PARCEL_WITH_RET(data, Bool, param->isAsync, SOFTBUS_TRANS_PROXY_WRITERAWDATA_FAILED);
281 WRITE_PARCEL_WITH_RET(data, Int32, param->sessionId, SOFTBUS_TRANS_PROXY_WRITERAWDATA_FAILED);
282 WRITE_PARCEL_WITH_RET(data, Uint32, param->actionId, SOFTBUS_TRANS_PROXY_WRITEINT_FAILED);
283 WRITE_PARCEL_WITH_RET(data, Bool, param->isLowLatency, SOFTBUS_IPC_ERR);
284 WRITE_PARCEL_WITH_RET(data, Uint64, param->flowInfo.flowSize, SOFTBUS_TRANS_PROXY_WRITEINT_FAILED);
285 WRITE_PARCEL_WITH_RET(data, Uint32, param->flowInfo.sessionType, SOFTBUS_TRANS_PROXY_WRITEINT_FAILED);
286 WRITE_PARCEL_WITH_RET(data, Uint32, param->flowInfo.flowQosType, SOFTBUS_TRANS_PROXY_WRITEINT_FAILED);
287 if (!TransWriteSessionAttrs(param->attr, data)) {
288 TRANS_LOGE(TRANS_SDK, "OpenSession write attr failed!");
289 return SOFTBUS_TRANS_PROXY_WRITERAWDATA_FAILED;
290 }
291
292 if (!WriteQosInfo(param, data)) {
293 TRANS_LOGE(TRANS_SDK, "OpenSession write qos failed!");
294 return SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED;
295 }
296
297 MessageParcel reply;
298 MessageOption option;
299 int32_t ret = remote->SendRequest(SERVER_OPEN_SESSION, data, reply, option);
300 if (ret != SOFTBUS_OK) {
301 TRANS_LOGE(TRANS_SDK, "OpenSession send request failed! ret=%{public}d", ret);
302 return ret;
303 }
304 TransSerializer *transSerializer = (TransSerializer *)reply.ReadRawData(sizeof(TransSerializer));
305 if (transSerializer == nullptr) {
306 TRANS_LOGE(TRANS_SDK, "OpenSession read TransSerializer failed!");
307 return SOFTBUS_TRANS_PROXY_READRAWDATA_FAILED;
308 }
309 if (param->isAsync) {
310 return transSerializer->ret;
311 }
312 info->channelId = transSerializer->transInfo.channelId;
313 info->channelType = transSerializer->transInfo.channelType;
314 return transSerializer->ret;
315 }
316
OpenAuthSession(const char * sessionName,const ConnectionAddr * addrInfo)317 int32_t TransServerProxy::OpenAuthSession(const char *sessionName, const ConnectionAddr *addrInfo)
318 {
319 if (sessionName == nullptr || addrInfo == nullptr) {
320 return SOFTBUS_INVALID_PARAM;
321 }
322 char *tmpName = nullptr;
323 Anonymize(sessionName, &tmpName);
324 TRANS_LOGI(TRANS_SDK, "ServerIpcOpenAuthSession begin. sessionName=%{public}s", AnonymizeWrapper(tmpName));
325 AnonymizeFree(tmpName);
326 sptr<IRemoteObject> remote = Remote();
327 if (remote == nullptr) {
328 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
329 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
330 }
331
332 MessageParcel data;
333 if (!data.WriteInterfaceToken(GetDescriptor())) {
334 TRANS_LOGE(TRANS_SDK, "OpenSession write InterfaceToken failed!");
335 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
336 }
337 if (!data.WriteCString(sessionName)) {
338 TRANS_LOGE(TRANS_SDK, "OpenSession write my session name failed!");
339 return SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED;
340 }
341 if (!data.WriteRawData((void *)addrInfo, sizeof(ConnectionAddr))) {
342 TRANS_LOGE(TRANS_SDK, "OpenSession write ConnectionAddr failed!");
343 return SOFTBUS_TRANS_PROXY_WRITERAWDATA_FAILED;
344 }
345
346 MessageParcel reply;
347 MessageOption option;
348 int32_t ret = remote->SendRequest(SERVER_OPEN_AUTH_SESSION, data, reply, option);
349 if (ret != SOFTBUS_OK) {
350 TRANS_LOGE(TRANS_SDK, "OpenSession send request failed! ret=%{public}d", ret);
351 return ret;
352 }
353 int32_t channelId = 0;
354 if (!reply.ReadInt32(channelId)) {
355 TRANS_LOGE(TRANS_SDK, "OpenSession read channelId failed!");
356 return SOFTBUS_TRANS_PROXY_READINT_FAILED;
357 }
358 return channelId;
359 }
360
NotifyAuthSuccess(int32_t channelId,int32_t channelType)361 int32_t TransServerProxy::NotifyAuthSuccess(int32_t channelId, int32_t channelType)
362 {
363 sptr<IRemoteObject> remote = GetSystemAbility();
364 if (remote == nullptr) {
365 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
366 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
367 }
368 MessageParcel data;
369 if (!data.WriteInterfaceToken(GetDescriptor())) {
370 TRANS_LOGE(TRANS_SDK, "ServerIpcNotifyAuthSuccess write InterfaceToken failed!");
371 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
372 }
373 if (!data.WriteInt32(channelId)) {
374 TRANS_LOGE(TRANS_SDK, "ServerIpcNotifyAuthSuccess write channel id failed!");
375 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
376 }
377 if (!data.WriteInt32(channelType)) {
378 TRANS_LOGE(TRANS_SDK, "ServerIpcNotifyAuthSuccess write channel type failed!");
379 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
380 }
381
382 MessageParcel reply;
383 MessageOption option;
384 int32_t ret = remote->SendRequest(SERVER_NOTIFY_AUTH_SUCCESS, data, reply, option);
385 if (ret != SOFTBUS_OK) {
386 TRANS_LOGE(TRANS_SDK, "ServerIpcNotifyAuthSuccess send request failed! ret=%{public}d", ret);
387 return ret;
388 }
389 int32_t serverRet = 0;
390 if (!reply.ReadInt32(serverRet)) {
391 TRANS_LOGE(TRANS_SDK, "ServerIpcNotifyAuthSuccess read serverRet failed!");
392 return SOFTBUS_TRANS_PROXY_READINT_FAILED;
393 }
394 return serverRet;
395 }
396
CloseChannel(const char * sessionName,int32_t channelId,int32_t channelType)397 int32_t TransServerProxy::CloseChannel(const char *sessionName, int32_t channelId, int32_t channelType)
398 {
399 sptr<IRemoteObject> remote = GetSystemAbility();
400 if (remote == nullptr) {
401 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
402 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
403 }
404 MessageParcel data;
405 if (!data.WriteInterfaceToken(GetDescriptor())) {
406 TRANS_LOGE(TRANS_SDK, "CloseChannel write InterfaceToken failed!");
407 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
408 }
409 if (!data.WriteInt32(channelId)) {
410 TRANS_LOGE(TRANS_SDK, "CloseChannel write channel id failed!");
411 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
412 }
413 if (!data.WriteInt32(channelType)) {
414 TRANS_LOGE(TRANS_SDK, "CloseChannel write channel type failed!");
415 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
416 }
417 if (channelType == CHANNEL_TYPE_UNDEFINED) {
418 if (!data.WriteCString(sessionName)) {
419 TRANS_LOGE(TRANS_SDK, "CloseChannel write session name failed!");
420 return SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED;
421 }
422 }
423 MessageParcel reply;
424 MessageOption option;
425 int32_t ret = remote->SendRequest(SERVER_CLOSE_CHANNEL, data, reply, option);
426 if (ret != SOFTBUS_OK) {
427 TRANS_LOGE(TRANS_SDK, "CloseChannel send request failed! ret=%{public}d", ret);
428 return ret;
429 }
430 int32_t serverRet = 0;
431 if (!reply.ReadInt32(serverRet)) {
432 TRANS_LOGE(TRANS_SDK, "CloseChannel read serverRet failed!");
433 return SOFTBUS_TRANS_PROXY_READINT_FAILED;
434 }
435 return serverRet;
436 }
437
CloseChannelWithStatistics(int32_t channelId,int32_t channelType,uint64_t laneId,const void * dataInfo,uint32_t len)438 int32_t TransServerProxy::CloseChannelWithStatistics(int32_t channelId, int32_t channelType, uint64_t laneId,
439 const void *dataInfo, uint32_t len)
440 {
441 if (dataInfo == nullptr) {
442 TRANS_LOGE(TRANS_SDK, "invalid param");
443 return SOFTBUS_INVALID_PARAM;
444 }
445 sptr<IRemoteObject> remote = GetSystemAbility();
446 if (remote == nullptr) {
447 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
448 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
449 }
450 MessageParcel data;
451 if (!data.WriteInterfaceToken(GetDescriptor())) {
452 TRANS_LOGE(TRANS_SDK, "CloseChannelWithStatistics write InterfaceToken failed!");
453 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
454 }
455 if (!data.WriteInt32(channelId)) {
456 TRANS_LOGE(TRANS_SDK, "CloseChannelWithStatistics write channel id failed!");
457 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
458 }
459 if (!data.WriteInt32(channelType)) {
460 TRANS_LOGE(TRANS_SDK, "CloseChannelWithStatistics write channel type failed!");
461 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
462 }
463 if (!data.WriteUint64(laneId)) {
464 TRANS_LOGE(TRANS_SDK, "CloseChannelWithStatistics write lane id failed!");
465 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
466 }
467 if (!data.WriteUint32(len)) {
468 TRANS_LOGE(TRANS_SDK, "CloseChannelWithStatistics write dataInfo len failed!");
469 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
470 }
471 if (!data.WriteRawData(dataInfo, len)) {
472 TRANS_LOGE(TRANS_SDK, "CloseChannelWithStatistics write dataInfo failed!");
473 return SOFTBUS_TRANS_PROXY_WRITERAWDATA_FAILED;
474 }
475 MessageParcel reply;
476 MessageOption option;
477 int32_t ret = remote->SendRequest(SERVER_CLOSE_CHANNEL_STATISTICS, data, reply, option);
478 if (ret != SOFTBUS_OK) {
479 TRANS_LOGE(TRANS_SDK, "CloseChannelWithStatistics send request failed! ret=%{public}d", ret);
480 return ret;
481 }
482 int32_t serverRet = 0;
483 if (!reply.ReadInt32(serverRet)) {
484 TRANS_LOGE(TRANS_SDK, "CloseChannelWithStatistics read serverRet failed!");
485 return SOFTBUS_TRANS_PROXY_READINT_FAILED;
486 }
487 return serverRet;
488 }
489
SendMessage(int32_t channelId,int32_t channelType,const void * dataInfo,uint32_t len,int32_t msgType)490 int32_t TransServerProxy::SendMessage(int32_t channelId, int32_t channelType, const void *dataInfo,
491 uint32_t len, int32_t msgType)
492 {
493 sptr<IRemoteObject> remote = Remote();
494 if (remote == nullptr) {
495 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
496 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
497 }
498 MessageParcel data;
499 if (!data.WriteInterfaceToken(GetDescriptor())) {
500 TRANS_LOGE(TRANS_SDK, "SendMessage write InterfaceToken failed!");
501 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
502 }
503 if (!data.WriteInt32(channelId)) {
504 TRANS_LOGE(TRANS_SDK, "SendMessage write channel id failed!");
505 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
506 }
507 if (!data.WriteInt32(channelType)) {
508 TRANS_LOGE(TRANS_SDK, "SendMessage write channel type failed!");
509 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
510 }
511 if (!data.WriteUint32(len)) {
512 TRANS_LOGE(TRANS_SDK, "SendMessage write dataInfo len failed!");
513 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
514 }
515 if (!data.WriteRawData(dataInfo, len)) {
516 TRANS_LOGE(TRANS_SDK, "SendMessage write dataInfo failed!");
517 return SOFTBUS_TRANS_PROXY_WRITERAWDATA_FAILED;
518 }
519 if (!data.WriteInt32(msgType)) {
520 TRANS_LOGE(TRANS_SDK, "SendMessage msgType failed!");
521 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
522 }
523
524 MessageParcel reply;
525 MessageOption option;
526 int32_t ret = remote->SendRequest(SERVER_SESSION_SENDMSG, data, reply, option);
527 if (ret != SOFTBUS_OK) {
528 TRANS_LOGE(TRANS_SDK, "SendMessage send request failed! ret=%{public}d", ret);
529 return ret;
530 }
531 int32_t serverRet = 0;
532 if (!reply.ReadInt32(serverRet)) {
533 TRANS_LOGE(TRANS_SDK, "SendMessage read serverRet failed!");
534 return SOFTBUS_TRANS_PROXY_READINT_FAILED;
535 }
536 return serverRet;
537 }
538
QosReport(int32_t channelId,int32_t chanType,int32_t appType,int32_t quality)539 int32_t TransServerProxy::QosReport(int32_t channelId, int32_t chanType, int32_t appType, int32_t quality)
540 {
541 sptr<IRemoteObject> remote = GetSystemAbility();
542 if (remote == nullptr) {
543 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
544 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
545 }
546 MessageParcel data;
547 if (!data.WriteInterfaceToken(GetDescriptor())) {
548 TRANS_LOGE(TRANS_SDK, "QosReport write InterfaceToken failed!");
549 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
550 }
551 if (!data.WriteInt32(channelId)) {
552 TRANS_LOGE(TRANS_SDK, "QosReport channelId failed!");
553 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
554 }
555 if (!data.WriteInt32(chanType)) {
556 TRANS_LOGE(TRANS_SDK, "QosReport chanType failed!");
557 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
558 }
559 if (!data.WriteInt32(appType)) {
560 TRANS_LOGE(TRANS_SDK, "QosReport appType failed!");
561 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
562 }
563 if (!data.WriteInt32(quality)) {
564 TRANS_LOGE(TRANS_SDK, "QosReport quality failed!");
565 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
566 }
567
568 MessageParcel reply;
569 MessageOption option;
570 int32_t ret = remote->SendRequest(SERVER_QOS_REPORT, data, reply, option);
571 if (ret != SOFTBUS_OK) {
572 TRANS_LOGE(TRANS_SDK, "QosReport send request failed! ret=%{public}d", ret);
573 return ret;
574 }
575 int32_t serverRet = 0;
576 if (!reply.ReadInt32(serverRet)) {
577 TRANS_LOGE(TRANS_SDK, "QosReport read serverRet failed!");
578 return SOFTBUS_TRANS_PROXY_READINT_FAILED;
579 }
580 return serverRet;
581 }
582
StreamStats(int32_t channelId,int32_t channelType,const StreamSendStats * statsData)583 int32_t TransServerProxy::StreamStats(int32_t channelId, int32_t channelType, const StreamSendStats *statsData)
584 {
585 sptr<IRemoteObject> remote = GetSystemAbility();
586 if (remote == nullptr) {
587 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
588 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
589 }
590 MessageParcel data;
591 if (!data.WriteInterfaceToken(GetDescriptor())) {
592 TRANS_LOGE(TRANS_SDK, "StreamStats write InterfaceToken failed!");
593 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
594 }
595 if (!data.WriteInt32(channelId)) {
596 TRANS_LOGE(TRANS_SDK, "StreamStats channelId failed!");
597 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
598 }
599 if (!data.WriteInt32(channelType)) {
600 TRANS_LOGE(TRANS_SDK, "StreamStats channelType failed!");
601 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
602 }
603 if (!data.WriteRawData((void *)statsData, sizeof(StreamSendStats))) {
604 TRANS_LOGE(TRANS_SDK, "write streamSendStats failed!");
605 return SOFTBUS_TRANS_PROXY_WRITERAWDATA_FAILED;
606 }
607 MessageParcel reply;
608 MessageOption option;
609 int32_t ret = remote->SendRequest(SERVER_STREAM_STATS, data, reply, option);
610 if (ret != SOFTBUS_OK) {
611 TRANS_LOGE(TRANS_SDK, "StreamStats send request failed, ret=%{public}d", ret);
612 return SOFTBUS_TRANS_PROXY_SEND_REQUEST_FAILED;
613 }
614 if (!reply.ReadInt32(ret)) {
615 TRANS_LOGE(TRANS_SDK, "StreamStats read serverRet failed");
616 return SOFTBUS_TRANS_PROXY_READINT_FAILED;
617 }
618 return ret;
619 }
620
RippleStats(int32_t channelId,int32_t channelType,const TrafficStats * statsData)621 int32_t TransServerProxy::RippleStats(int32_t channelId, int32_t channelType, const TrafficStats *statsData)
622 {
623 sptr<IRemoteObject> remote = GetSystemAbility();
624 if (remote == nullptr) {
625 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
626 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
627 }
628 MessageParcel data;
629 if (!data.WriteInterfaceToken(GetDescriptor())) {
630 TRANS_LOGE(TRANS_SDK, "RippleStats write InterfaceToken failed!");
631 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
632 }
633 if (!data.WriteInt32(channelId)) {
634 TRANS_LOGE(TRANS_SDK, "RippleStats channelId failed!");
635 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
636 }
637 if (!data.WriteInt32(channelType)) {
638 TRANS_LOGE(TRANS_SDK, "RippleStats channelType failed!");
639 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
640 }
641 if (!data.WriteRawData((void *)statsData, sizeof(TrafficStats))) {
642 TRANS_LOGE(TRANS_SDK, "write RippleStats failed!");
643 return SOFTBUS_TRANS_PROXY_WRITERAWDATA_FAILED;
644 }
645 MessageParcel reply;
646 MessageOption option;
647 int32_t ret = remote->SendRequest(SERVER_RIPPLE_STATS, data, reply, option);
648 if (ret != SOFTBUS_OK) {
649 TRANS_LOGE(TRANS_SDK, "RippleStats send request failed, ret=%{public}d", ret);
650 return ret;
651 }
652 if (!reply.ReadInt32(ret)) {
653 TRANS_LOGE(TRANS_SDK, "RippleStats read serverRet failed");
654 return SOFTBUS_TRANS_PROXY_READINT_FAILED;
655 }
656 return ret;
657 }
658
GrantPermission(int32_t uid,int32_t pid,const char * sessionName)659 int32_t TransServerProxy::GrantPermission(int32_t uid, int32_t pid, const char *sessionName)
660 {
661 sptr<IRemoteObject> remote = GetSystemAbility();
662 if (remote == nullptr) {
663 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
664 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
665 }
666 MessageParcel data;
667 if (!data.WriteInterfaceToken(GetDescriptor())) {
668 TRANS_LOGE(TRANS_SDK, "GrantPermission write InterfaceToken failed!");
669 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
670 }
671 if (!data.WriteInt32(uid)) {
672 TRANS_LOGE(TRANS_SDK, "GrantPermission write uid failed!");
673 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
674 }
675 if (!data.WriteInt32(pid)) {
676 TRANS_LOGE(TRANS_SDK, "GrantPermission write pid failed!");
677 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
678 }
679 if (!data.WriteCString(sessionName)) {
680 TRANS_LOGE(TRANS_SDK, "GrantPermission write sessionName failed!");
681 return SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED;
682 }
683
684 MessageParcel reply;
685 MessageOption option;
686 int32_t ret = remote->SendRequest(SERVER_GRANT_PERMISSION, data, reply, option);
687 if (ret != ERR_NONE) {
688 TRANS_LOGE(TRANS_SDK, "GrantPermission send request failed, ret=%{public}d", ret);
689 return SOFTBUS_TRANS_PROXY_SEND_REQUEST_FAILED;
690 }
691 if (!reply.ReadInt32(ret)) {
692 TRANS_LOGE(TRANS_SDK, "GrantPermission read serverRet failed!");
693 return SOFTBUS_TRANS_PROXY_READINT_FAILED;
694 }
695 return ret;
696 }
697
RemovePermission(const char * sessionName)698 int32_t TransServerProxy::RemovePermission(const char *sessionName)
699 {
700 sptr<IRemoteObject> remote = GetSystemAbility();
701 if (remote == nullptr) {
702 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
703 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
704 }
705 MessageParcel data;
706 if (!data.WriteInterfaceToken(GetDescriptor())) {
707 TRANS_LOGE(TRANS_SDK, "RemovePermission write InterfaceToken failed!");
708 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
709 }
710 if (!data.WriteCString(sessionName)) {
711 TRANS_LOGE(TRANS_SDK, "RemovePermission write sessionName failed!");
712 return SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED;
713 }
714
715 MessageParcel reply;
716 MessageOption option;
717 int32_t ret = remote->SendRequest(SERVER_REMOVE_PERMISSION, data, reply, option);
718 if (ret != ERR_NONE) {
719 TRANS_LOGE(TRANS_SDK, "RemovePermission send request failed, ret=%{public}d", ret);
720 return SOFTBUS_TRANS_PROXY_SEND_REQUEST_FAILED;
721 }
722 if (!reply.ReadInt32(ret)) {
723 TRANS_LOGE(TRANS_SDK, "RemovePermission read serverRet failed!");
724 return SOFTBUS_TRANS_PROXY_READINT_FAILED;
725 }
726 return ret;
727 }
728
JoinLNN(const char * pkgName,void * addr,uint32_t addrTypeLen,bool isForceJoin)729 int32_t TransServerProxy::JoinLNN(const char *pkgName, void *addr, uint32_t addrTypeLen, bool isForceJoin)
730 {
731 (void)pkgName;
732 (void)addr;
733 (void)addrTypeLen;
734 (void)isForceJoin;
735 return SOFTBUS_OK;
736 }
737
LeaveLNN(const char * pkgName,const char * networkId)738 int32_t TransServerProxy::LeaveLNN(const char *pkgName, const char *networkId)
739 {
740 (void)pkgName;
741 (void)networkId;
742 return SOFTBUS_OK;
743 }
744
GetAllOnlineNodeInfo(const char * pkgName,void ** info,uint32_t infoTypeLen,int32_t * infoNum)745 int32_t TransServerProxy::GetAllOnlineNodeInfo(const char *pkgName, void **info, uint32_t infoTypeLen, int32_t *infoNum)
746 {
747 (void)pkgName;
748 (void)info;
749 (void)infoTypeLen;
750 (void)infoNum;
751 return SOFTBUS_OK;
752 }
753
GetLocalDeviceInfo(const char * pkgName,void * info,uint32_t infoTypeLen)754 int32_t TransServerProxy::GetLocalDeviceInfo(const char *pkgName, void *info, uint32_t infoTypeLen)
755 {
756 (void)pkgName;
757 (void)info;
758 (void)infoTypeLen;
759 return SOFTBUS_OK;
760 }
761
GetNodeKeyInfo(const char * pkgName,const char * networkId,int32_t key,unsigned char * buf,uint32_t len)762 int32_t TransServerProxy::GetNodeKeyInfo(const char *pkgName, const char *networkId, int32_t key, unsigned char *buf,
763 uint32_t len)
764 {
765 (void)pkgName;
766 (void)networkId;
767 (void)key;
768 (void)buf;
769 (void)len;
770 return SOFTBUS_OK;
771 }
772
SetNodeDataChangeFlag(const char * pkgName,const char * networkId,uint16_t dataChangeFlag)773 int32_t TransServerProxy::SetNodeDataChangeFlag(const char *pkgName, const char *networkId, uint16_t dataChangeFlag)
774 {
775 (void)pkgName;
776 (void)networkId;
777 (void)dataChangeFlag;
778 return SOFTBUS_OK;
779 }
780
RegDataLevelChangeCb(const char * pkgName)781 int32_t TransServerProxy::RegDataLevelChangeCb(const char *pkgName)
782 {
783 (void)pkgName;
784 return SOFTBUS_OK;
785 }
786
UnregDataLevelChangeCb(const char * pkgName)787 int32_t TransServerProxy::UnregDataLevelChangeCb(const char *pkgName)
788 {
789 (void)pkgName;
790 return SOFTBUS_OK;
791 }
792
SetDataLevel(const DataLevel * dataLevel)793 int32_t TransServerProxy::SetDataLevel(const DataLevel *dataLevel)
794 {
795 (void)dataLevel;
796 return SOFTBUS_OK;
797 }
798
RegisterRangeCallbackForMsdp(const char * pkgName)799 int32_t TransServerProxy::RegisterRangeCallbackForMsdp(const char *pkgName)
800 {
801 (void)pkgName;
802 return SOFTBUS_OK;
803 }
804
UnregisterRangeCallbackForMsdp(const char * pkgName)805 int32_t TransServerProxy::UnregisterRangeCallbackForMsdp(const char *pkgName)
806 {
807 (void)pkgName;
808 return SOFTBUS_OK;
809 }
810
StartTimeSync(const char * pkgName,const char * targetNetworkId,int32_t accuracy,int32_t period)811 int32_t TransServerProxy::StartTimeSync(const char *pkgName, const char *targetNetworkId, int32_t accuracy,
812 int32_t period)
813 {
814 (void)pkgName;
815 (void)targetNetworkId;
816 (void)accuracy;
817 (void)period;
818 return SOFTBUS_OK;
819 }
820
StopTimeSync(const char * pkgName,const char * targetNetworkId)821 int32_t TransServerProxy::StopTimeSync(const char *pkgName, const char *targetNetworkId)
822 {
823 (void)pkgName;
824 (void)targetNetworkId;
825 return SOFTBUS_OK;
826 }
827
GetSoftbusSpecObject(sptr<IRemoteObject> & object)828 int32_t TransServerProxy::GetSoftbusSpecObject(sptr<IRemoteObject> &object)
829 {
830 sptr<IRemoteObject> remote = GetSystemAbility();
831 if (remote == nullptr) {
832 TRANS_LOGE(TRANS_SDK, "remote is null");
833 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
834 }
835 MessageParcel data;
836 if (!data.WriteInterfaceToken(GetDescriptor())) {
837 TRANS_LOGE(TRANS_SDK, "GetSoftbusSpecObject write InterfaceToken failed!");
838 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
839 }
840 MessageParcel reply;
841 MessageOption option;
842 int32_t ret = remote->SendRequest(SERVER_GET_SOFTBUS_SPEC_OBJECT, data, reply, option);
843 if (ret != ERR_NONE) {
844 TRANS_LOGE(TRANS_SDK, "GetSoftbusSpecObject send request failed, ret=%{public}d", ret);
845 return ret;
846 }
847 if (!reply.ReadInt32(ret)) {
848 TRANS_LOGE(TRANS_SDK, "GetSoftbusSpecObject send ret failed");
849 return SOFTBUS_TRANS_PROXY_READINT_FAILED;
850 }
851 if (ret == SOFTBUS_OK) {
852 object = reply.ReadRemoteObject();
853 }
854 return ret;
855 }
856
EvaluateQos(const char * peerNetworkId,TransDataType dataType,const QosTV * qos,uint32_t qosCount)857 int32_t TransServerProxy::EvaluateQos(const char *peerNetworkId, TransDataType dataType, const QosTV *qos,
858 uint32_t qosCount)
859 {
860 sptr<IRemoteObject> remote = GetSystemAbility();
861 if (remote == nullptr) {
862 TRANS_LOGE(TRANS_SDK, "remote is null");
863 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
864 }
865
866 MessageParcel data;
867 if (!data.WriteInterfaceToken(GetDescriptor())) {
868 TRANS_LOGE(TRANS_SDK, "EvaluateQos write InterfaceToken failed!");
869 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
870 }
871
872 if (!data.WriteCString(peerNetworkId)) {
873 TRANS_LOGE(TRANS_SDK, "EvaluateQos write peerNetworkId failed!");
874 return SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED;
875 }
876
877 if (!data.WriteInt32(dataType)) {
878 TRANS_LOGE(TRANS_SDK, "EvaluateQos write dataType failed!");
879 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
880 }
881
882 if (!data.WriteUint32(qosCount)) {
883 TRANS_LOGE(TRANS_SDK, "EvaluateQos write count of qos failed!");
884 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
885 }
886
887 if (qosCount > 0) {
888 if (!data.WriteBuffer(qos, sizeof(QosTV) * qosCount)) {
889 TRANS_LOGE(TRANS_SDK, "EvaluateQos write qos info failed!");
890 return SOFTBUS_IPC_ERR;
891 }
892 }
893
894 MessageParcel reply;
895 MessageOption option;
896 int32_t ret = remote->SendRequest(SERVER_EVALUATE_QOS, data, reply, option);
897 if (ret != ERR_NONE) {
898 TRANS_LOGE(TRANS_SDK, "EvaluateQos request failed, ret=%{public}d", ret);
899 return ret;
900 }
901
902 if (!reply.ReadInt32(ret)) {
903 TRANS_LOGE(TRANS_SDK, "EvaluateQos read ret failed");
904 return SOFTBUS_TRANS_PROXY_READINT_FAILED;
905 }
906
907 return ret;
908 }
909
ProcessInnerEvent(int32_t eventType,uint8_t * buf,uint32_t len)910 int32_t TransServerProxy::ProcessInnerEvent(int32_t eventType, uint8_t *buf, uint32_t len)
911 {
912 sptr<IRemoteObject> remote = GetSystemAbility();
913 if (remote == nullptr) {
914 TRANS_LOGE(TRANS_SDK, "remote is null");
915 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
916 }
917
918 MessageParcel data;
919 if (!data.WriteInterfaceToken(GetDescriptor())) {
920 TRANS_LOGE(TRANS_SDK, "write InterfaceToken failed!");
921 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
922 }
923
924 if (!data.WriteInt32(eventType)) {
925 TRANS_LOGE(TRANS_SDK, "write eventType failed!");
926 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
927 }
928
929 if (!data.WriteUint32(len)) {
930 TRANS_LOGE(TRANS_SDK, "write len failed!");
931 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
932 }
933
934 if (!data.WriteRawData(buf, len)) {
935 TRANS_LOGE(TRANS_SDK, "write buf failed!");
936 return SOFTBUS_TRANS_PROXY_WRITERAWDATA_FAILED;
937 }
938
939 MessageParcel reply;
940 MessageOption option = { MessageOption::TF_ASYNC };
941 int32_t ret = remote->SendRequest(SERVER_PROCESS_INNER_EVENT, data, reply, option);
942 if (ret != SOFTBUS_OK) {
943 TRANS_LOGE(TRANS_CTRL, "send request failed, ret=%{public}d", ret);
944 return ret;
945 }
946 return SOFTBUS_OK;
947 }
948
PrivilegeCloseChannel(uint64_t tokenId,int32_t pid,const char * peerNetworkId)949 int32_t TransServerProxy::PrivilegeCloseChannel(uint64_t tokenId, int32_t pid, const char *peerNetworkId)
950 {
951 sptr<IRemoteObject> remote = GetSystemAbility();
952 if (remote == nullptr) {
953 TRANS_LOGE(TRANS_SDK, "remote is null");
954 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
955 }
956
957 MessageParcel data;
958 if (!data.WriteInterfaceToken(GetDescriptor())) {
959 TRANS_LOGE(TRANS_SDK, "write InterfaceToken failed!");
960 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
961 }
962
963 if (!data.WriteUint64(tokenId)) {
964 TRANS_LOGE(TRANS_SDK, "write tokenId failed!");
965 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
966 }
967
968 if (!data.WriteInt32(pid)) {
969 TRANS_LOGE(TRANS_SDK, "write pid failed!");
970 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
971 }
972
973 if (!data.WriteCString(peerNetworkId)) {
974 TRANS_LOGE(TRANS_SDK, "write peerNetworkId failed!");
975 return SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED;
976 }
977
978 MessageParcel reply;
979 MessageOption option;
980 int32_t ret = remote->SendRequest(SERVER_PRIVILEGE_CLOSE_CHANNEL, data, reply, option);
981 if (ret != SOFTBUS_OK) {
982 TRANS_LOGE(TRANS_SDK, "request failed, ret=%{public}d", ret);
983 return ret;
984 }
985
986 if (!reply.ReadInt32(ret)) {
987 TRANS_LOGE(TRANS_SDK, "EvaluateQos read ret failed");
988 return SOFTBUS_TRANS_PROXY_READINT_FAILED;
989 }
990 return ret;
991 }
992
GetRemoteObject(sptr<IRemoteObject> & object)993 int32_t TransServerProxy::GetRemoteObject(sptr<IRemoteObject> &object)
994 {
995 sptr<IRemoteObject> remote = Remote();
996 if (remote == nullptr) {
997 TRANS_LOGE(TRANS_SDK, "remote is nullptr");
998 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
999 }
1000 object = remote;
1001 return SOFTBUS_OK;
1002 }
1003
OpenBrProxy(const char * brMac,const char * uuid)1004 int32_t TransServerProxy::OpenBrProxy(const char *brMac, const char *uuid)
1005 {
1006 if (brMac == nullptr || uuid == nullptr) {
1007 return SOFTBUS_INVALID_PARAM;
1008 }
1009 sptr<IRemoteObject> remote = GetSystemAbility();
1010 if (remote == nullptr) {
1011 TRANS_LOGE(TRANS_SDK, "[br_proxy] remote is nullptr!");
1012 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
1013 }
1014
1015 MessageParcel data;
1016 if (!data.WriteInterfaceToken(GetDescriptor())) {
1017 TRANS_LOGE(TRANS_SDK, "[br_proxy] write InterfaceToken failed!");
1018 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
1019 }
1020 if (!data.WriteCString(brMac)) {
1021 TRANS_LOGE(TRANS_SDK, "[br_proxy] write brMac failed!");
1022 return SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED;
1023 }
1024 if (!data.WriteCString(uuid)) {
1025 TRANS_LOGE(TRANS_SDK, "[br_proxy] write uuid failed!");
1026 return SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED;
1027 }
1028 MessageParcel reply;
1029 MessageOption option = { MessageOption::TF_SYNC };
1030 int32_t ret = remote->SendRequest(SERVER_OPEN_BR_PROXY, data, reply, option);
1031 if (ret != SOFTBUS_OK) {
1032 TRANS_LOGE(TRANS_SDK, "[br_proxy] send request failed! ret=%{public}d", ret);
1033 return ret;
1034 }
1035 int32_t serverRet = 0;
1036 if (!reply.ReadInt32(serverRet)) {
1037 TRANS_LOGE(TRANS_SDK, "[br_proxy] read serverRet failed!");
1038 return SOFTBUS_TRANS_PROXY_READINT_FAILED;
1039 }
1040 return serverRet;
1041 }
1042
CloseBrProxy(int32_t channelId)1043 int32_t TransServerProxy::CloseBrProxy(int32_t channelId)
1044 {
1045 sptr<IRemoteObject> remote = GetSystemAbility();
1046 if (remote == nullptr) {
1047 TRANS_LOGE(TRANS_SDK, "[br_proxy] remote is nullptr!");
1048 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
1049 }
1050
1051 MessageParcel data;
1052 if (!data.WriteInterfaceToken(GetDescriptor())) {
1053 TRANS_LOGE(TRANS_SDK, "[br_proxy] write InterfaceToken failed!");
1054 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
1055 }
1056
1057 if (!data.WriteInt32(channelId)) {
1058 TRANS_LOGE(TRANS_SDK, "[br_proxy] write channelId failed!");
1059 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
1060 }
1061 MessageParcel reply;
1062 MessageOption option;
1063 int32_t ret = remote->SendRequest(SERVER_CLOSE_BR_PROXY, data, reply, option);
1064 if (ret != SOFTBUS_OK) {
1065 TRANS_LOGE(TRANS_SDK, "[br_proxy] send request failed! ret=%{public}d", ret);
1066 return ret;
1067 }
1068 int32_t serverRet = 0;
1069 if (!reply.ReadInt32(serverRet)) {
1070 TRANS_LOGE(TRANS_SDK, "[br_proxy] read serverRet failed!");
1071 return SOFTBUS_TRANS_PROXY_READINT_FAILED;
1072 }
1073 return serverRet;
1074 }
1075
SendBrProxyData(int32_t channelId,char * data,uint32_t dataLen)1076 int32_t TransServerProxy::SendBrProxyData(int32_t channelId, char *data, uint32_t dataLen)
1077 {
1078 sptr<IRemoteObject> remote = GetSystemAbility();
1079 if (remote == nullptr) {
1080 TRANS_LOGE(TRANS_SDK, "[br_proxy] remote is nullptr!");
1081 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
1082 }
1083
1084 MessageParcel pData;
1085 if (!pData.WriteInterfaceToken(GetDescriptor())) {
1086 TRANS_LOGE(TRANS_SDK, "[br_proxy] write InterfaceToken failed!");
1087 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
1088 }
1089
1090 if (!pData.WriteInt32(channelId)) {
1091 TRANS_LOGE(TRANS_SDK, "[br_proxy] write channelId failed!");
1092 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
1093 }
1094 if (!pData.WriteUint32(dataLen)) {
1095 TRANS_LOGE(TRANS_SDK, "[br_proxy] write data len failed!");
1096 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
1097 }
1098 if (!pData.WriteRawData(data, dataLen)) {
1099 TRANS_LOGE(TRANS_SDK, "[br_proxy] write data failed!");
1100 return SOFTBUS_TRANS_PROXY_WRITERAWDATA_FAILED;
1101 }
1102 MessageParcel reply;
1103 MessageOption option;
1104 int32_t ret = remote->SendRequest(SERVER_SEND_BR_PROXY_DATA, pData, reply, option);
1105 if (ret != SOFTBUS_OK) {
1106 TRANS_LOGE(TRANS_SDK, "[br_proxy] send request failed! ret=%{public}d", ret);
1107 return ret;
1108 }
1109 int32_t serverRet = 0;
1110 if (!reply.ReadInt32(serverRet)) {
1111 TRANS_LOGE(TRANS_SDK, "[br_proxy] read serverRet failed!");
1112 return SOFTBUS_TRANS_PROXY_READINT_FAILED;
1113 }
1114 return serverRet;
1115 }
1116
SetListenerState(int32_t channelId,int32_t type,bool CbEnabled)1117 int32_t TransServerProxy::SetListenerState(int32_t channelId, int32_t type, bool CbEnabled)
1118 {
1119 sptr<IRemoteObject> remote = GetSystemAbility();
1120 if (remote == nullptr) {
1121 TRANS_LOGE(TRANS_SDK, "[br_proxy] remote is nullptr!");
1122 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
1123 }
1124
1125 MessageParcel data;
1126 if (!data.WriteInterfaceToken(GetDescriptor())) {
1127 TRANS_LOGE(TRANS_SDK, "[br_proxy] write InterfaceToken failed!");
1128 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
1129 }
1130
1131 if (!data.WriteInt32(channelId)) {
1132 TRANS_LOGE(TRANS_SDK, "[br_proxy] write channelId failed!");
1133 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
1134 }
1135 if (!data.WriteInt32(type)) {
1136 TRANS_LOGE(TRANS_SDK, "[br_proxy] write type failed!");
1137 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
1138 }
1139
1140 if (!data.WriteBool(CbEnabled)) {
1141 TRANS_LOGE(TRANS_SDK, "[br_proxy] write CbEnabled failed!");
1142 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
1143 }
1144
1145 MessageParcel reply;
1146 MessageOption option = { MessageOption::TF_ASYNC };
1147 int32_t ret = remote->SendRequest(SERVER_SET_BR_PROXY_LISTENER_STATE, data, reply, option);
1148 if (ret != SOFTBUS_OK) {
1149 TRANS_LOGE(TRANS_SDK, "[br_proxy] send request failed! ret=%{public}d", ret);
1150 return ret;
1151 }
1152
1153 return ret;
1154 }
1155
GetProxyChannelState(int32_t uid,bool * isEnable)1156 int32_t TransServerProxy::GetProxyChannelState(int32_t uid, bool *isEnable)
1157 {
1158 sptr<IRemoteObject> remote = GetSystemAbility();
1159 if (remote == nullptr) {
1160 TRANS_LOGE(TRANS_SDK, "[br_proxy] remote is nullptr!");
1161 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
1162 }
1163
1164 MessageParcel data;
1165 if (!data.WriteInterfaceToken(GetDescriptor())) {
1166 TRANS_LOGE(TRANS_SDK, "[br_proxy] write InterfaceToken failed!");
1167 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
1168 }
1169
1170 if (!data.WriteInt32(uid)) {
1171 TRANS_LOGE(TRANS_SDK, "[br_proxy] write channelId failed!");
1172 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
1173 }
1174
1175 MessageParcel reply;
1176 MessageOption option = { MessageOption::TF_SYNC };
1177 int32_t ret = remote->SendRequest(SERVER_GET_BR_PROXY_CHANNEL_STATE, data, reply, option);
1178 if (ret != SOFTBUS_OK) {
1179 TRANS_LOGE(TRANS_SDK, "[br_proxy] send request failed! ret=%{public}d", ret);
1180 return ret;
1181 }
1182 if (!reply.ReadBool(*isEnable)) {
1183 TRANS_LOGE(TRANS_SDK, "[br_proxy] read bool failed!");
1184 return SOFTBUS_TRANS_PROXY_WRITEINT_FAILED;
1185 }
1186
1187 return ret;
1188 }
1189
RegisterPushHook()1190 int32_t TransServerProxy::RegisterPushHook()
1191 {
1192 sptr<IRemoteObject> remote = GetSystemAbility();
1193 if (remote == nullptr) {
1194 TRANS_LOGE(TRANS_SDK, "[br_proxy] remote is nullptr!");
1195 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
1196 }
1197
1198 MessageParcel data;
1199 if (!data.WriteInterfaceToken(GetDescriptor())) {
1200 TRANS_LOGE(TRANS_SDK, "[br_proxy] write InterfaceToken failed!");
1201 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
1202 }
1203
1204 MessageParcel reply;
1205 MessageOption option = { MessageOption::TF_SYNC };
1206 int32_t ret = remote->SendRequest(SERVER_REGISTER_PUSH_HOOK, data, reply, option);
1207 if (ret != SOFTBUS_OK) {
1208 TRANS_LOGE(TRANS_SDK, "[br_proxy] send request failed! ret=%{public}d", ret);
1209 return ret;
1210 }
1211
1212 int32_t serverRet = 0;
1213 if (!reply.ReadInt32(serverRet)) {
1214 TRANS_LOGE(TRANS_SDK, "[br_proxy] read serverRet failed!");
1215 return SOFTBUS_TRANS_PROXY_READINT_FAILED;
1216 }
1217 return serverRet;
1218 }
1219 } // namespace OHOS
1220