1 /*
2 * Copyright (c) 2021-2023 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 "ipc_types.h"
20
21 #include "anonymizer.h"
22 #include "message_parcel.h"
23 #include "softbus_errcode.h"
24 #include "softbus_server_ipc_interface_code.h"
25 #include "trans_log.h"
26
27 namespace OHOS {
28 static uint32_t g_getSystemAbilityId = 2;
29 const std::u16string SAMANAGER_INTERFACE_TOKEN = u"ohos.samgr.accessToken";
GetSystemAbility()30 static sptr<IRemoteObject> GetSystemAbility()
31 {
32 MessageParcel data;
33
34 if (!data.WriteInterfaceToken(SAMANAGER_INTERFACE_TOKEN)) {
35 return nullptr;
36 }
37
38 data.WriteInt32(SOFTBUS_SERVER_SA_ID_INNER);
39 MessageParcel reply;
40 MessageOption option;
41 sptr<IRemoteObject> samgr = IPCSkeleton::GetContextObject();
42 if (samgr == nullptr) {
43 TRANS_LOGE(TRANS_SDK, "Get samgr failed!");
44 return nullptr;
45 }
46 int32_t err = samgr->SendRequest(g_getSystemAbilityId, data, reply, option);
47 if (err != 0) {
48 TRANS_LOGE(TRANS_SDK, "Get GetSystemAbility failed!");
49 return nullptr;
50 }
51 return reply.ReadRemoteObject();
52 }
53
StartDiscovery(const char * pkgName,const SubscribeInfo * subInfo)54 int32_t TransServerProxy::StartDiscovery(const char *pkgName, const SubscribeInfo *subInfo)
55 {
56 (void)pkgName;
57 (void)subInfo;
58 return SOFTBUS_OK;
59 }
60
StopDiscovery(const char * pkgName,int subscribeId)61 int32_t TransServerProxy::StopDiscovery(const char *pkgName, int subscribeId)
62 {
63 (void)pkgName;
64 (void)subscribeId;
65 return SOFTBUS_OK;
66 }
67
PublishService(const char * pkgName,const PublishInfo * pubInfo)68 int32_t TransServerProxy::PublishService(const char *pkgName, const PublishInfo *pubInfo)
69 {
70 (void)pkgName;
71 (void)pubInfo;
72 return SOFTBUS_OK;
73 }
74
UnPublishService(const char * pkgName,int publishId)75 int32_t TransServerProxy::UnPublishService(const char *pkgName, int publishId)
76 {
77 (void)pkgName;
78 (void)publishId;
79 return SOFTBUS_OK;
80 }
81
SoftbusRegisterService(const char * clientPkgName,const sptr<IRemoteObject> & object)82 int32_t TransServerProxy::SoftbusRegisterService(const char *clientPkgName, const sptr<IRemoteObject>& object)
83 {
84 (void)clientPkgName;
85 (void)object;
86 return SOFTBUS_OK;
87 }
88
CreateSessionServer(const char * pkgName,const char * sessionName)89 int32_t TransServerProxy::CreateSessionServer(const char *pkgName, const char *sessionName)
90 {
91 if (pkgName == nullptr || sessionName == nullptr) {
92 return SOFTBUS_ERR;
93 }
94 sptr<IRemoteObject> remote = GetSystemAbility();
95 if (remote == nullptr) {
96 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
97 return SOFTBUS_ERR;
98 }
99
100 MessageParcel data;
101 if (!data.WriteInterfaceToken(GetDescriptor())) {
102 TRANS_LOGE(TRANS_SDK, "write InterfaceToken failed!");
103 return SOFTBUS_ERR;
104 }
105 if (!data.WriteCString(pkgName)) {
106 TRANS_LOGE(TRANS_SDK, "write pkg name failed!");
107 return SOFTBUS_ERR;
108 }
109 if (!data.WriteCString(sessionName)) {
110 TRANS_LOGE(TRANS_SDK, "write session name failed!");
111 return SOFTBUS_ERR;
112 }
113 MessageParcel reply;
114 MessageOption option;
115 int32_t ret = remote->SendRequest(SERVER_CREATE_SESSION_SERVER, data, reply, option);
116 if (ret != SOFTBUS_OK) {
117 TRANS_LOGE(TRANS_SDK, "send request failed! ret=%{public}d",
118 ret);
119 return SOFTBUS_ERR;
120 }
121 int32_t serverRet = 0;
122 if (!reply.ReadInt32(serverRet)) {
123 TRANS_LOGE(TRANS_SDK, "read serverRet failed!");
124 return SOFTBUS_ERR;
125 }
126 return serverRet;
127 }
128
RemoveSessionServer(const char * pkgName,const char * sessionName)129 int32_t TransServerProxy::RemoveSessionServer(const char *pkgName, const char *sessionName)
130 {
131 if (pkgName == nullptr || sessionName == nullptr) {
132 return SOFTBUS_ERR;
133 }
134 sptr<IRemoteObject> remote = GetSystemAbility();
135 if (remote == nullptr) {
136 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
137 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
138 }
139
140 MessageParcel data;
141 if (!data.WriteInterfaceToken(GetDescriptor())) {
142 TRANS_LOGE(TRANS_SDK, "write InterfaceToken failed!");
143 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
144 }
145 if (!data.WriteCString(pkgName)) {
146 TRANS_LOGE(TRANS_SDK, "write pkg name failed!");
147 return SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED;
148 }
149 if (!data.WriteCString(sessionName)) {
150 TRANS_LOGE(TRANS_SDK, "session name failed!");
151 return SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED;
152 }
153 MessageParcel reply;
154 MessageOption option;
155 int32_t ret = remote->SendRequest(SERVER_REMOVE_SESSION_SERVER, data, reply, option);
156 if (ret != SOFTBUS_OK) {
157 TRANS_LOGE(TRANS_SDK, "send request failed! ret=%{public}d",
158 ret);
159 return SOFTBUS_TRANS_PROXY_SEND_REQUEST_FAILED;
160 }
161 int32_t serverRet = 0;
162 if (!reply.ReadInt32(serverRet)) {
163 TRANS_LOGE(TRANS_SDK, "read serverRet failed!");
164 return SOFTBUS_TRANS_PROXY_READRAWDATA_FAILED;
165 }
166 return serverRet;
167 }
168
TransWriteSessionAttrs(const SessionAttribute * attrs,MessageParcel & data)169 static bool TransWriteSessionAttrs(const SessionAttribute *attrs, MessageParcel &data)
170 {
171 if (attrs == nullptr) {
172 TRANS_LOGE(TRANS_SDK, "attrs is nullptr!");
173 return false;
174 }
175
176 if (!data.WriteInt32(attrs->dataType)) {
177 TRANS_LOGE(TRANS_SDK, "OpenSession write my attrs dataType failed!");
178 return false;
179 }
180
181 if (!data.WriteInt32(attrs->linkTypeNum)) {
182 TRANS_LOGE(TRANS_SDK, "OpenSession write my attrs linkTypeNum failed!");
183 return false;
184 }
185
186 if (attrs->linkTypeNum > 0) {
187 if (!data.WriteBuffer(attrs->linkType, sizeof(LinkType) * attrs->linkTypeNum)) {
188 TRANS_LOGE(TRANS_SDK, "OpenSession write my attrs linkType failed!");
189 return false;
190 }
191 }
192
193 if (!data.WriteInt32(attrs->attr.streamAttr.streamType)) {
194 TRANS_LOGE(TRANS_SDK, "OpenSession write my attrs streamAttr failed!");
195 return false;
196 }
197
198 if (attrs->fastTransData != nullptr) {
199 if (!data.WriteUint16(attrs->fastTransDataSize)) {
200 TRANS_LOGE(TRANS_SDK, "OpenSession write my attrs fastTransDataSize failed!");
201 return false;
202 }
203 if (!data.WriteRawData(attrs->fastTransData, attrs->fastTransDataSize)) {
204 TRANS_LOGE(TRANS_SDK, "OpenSession write my attrs fastTransData failed!");
205 return false;
206 }
207 } else {
208 if (!data.WriteUint16(0)) {
209 TRANS_LOGE(TRANS_SDK, "OpenSession write my attrs fastTransDataSize failed!");
210 return false;
211 }
212 }
213
214 return true;
215 }
216
WriteQosInfo(const SessionParam * param,MessageParcel & data)217 static bool WriteQosInfo(const SessionParam *param, MessageParcel &data)
218 {
219 if (!data.WriteBool(param->isQosLane)) {
220 TRANS_LOGE(TRANS_SDK, "OpenSession write qos flag failed!");
221 return false;
222 }
223
224 if (!param->isQosLane) {
225 return true;
226 }
227
228 if (!data.WriteUint32(param->qosCount)) {
229 TRANS_LOGE(TRANS_SDK, "OpenSession write count of qos failed!");
230 return false;
231 }
232
233 if (param->qosCount > 0) {
234 if (!data.WriteBuffer(param->qos, sizeof(QosTV) * param->qosCount)) {
235 TRANS_LOGE(TRANS_SDK, "OpenSession write qos info failed!");
236 return false;
237 }
238 }
239
240 return true;
241 }
242
OpenSession(const SessionParam * param,TransInfo * info)243 int32_t TransServerProxy::OpenSession(const SessionParam *param, TransInfo *info)
244 {
245 if (param->sessionName == nullptr || param->peerSessionName == nullptr ||
246 param->peerDeviceId == nullptr || param->groupId == nullptr) {
247 return SOFTBUS_INVALID_PARAM;
248 }
249 sptr<IRemoteObject> remote = GetSystemAbility();
250 if (remote == nullptr) {
251 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
252 return SOFTBUS_TRANS_PROXY_REMOTE_NULL;
253 }
254
255 MessageParcel data;
256 if (!data.WriteInterfaceToken(GetDescriptor())) {
257 TRANS_LOGE(TRANS_SDK, "OpenSession write InterfaceToken failed!");
258 return SOFTBUS_TRANS_PROXY_WRITETOKEN_FAILED;
259 }
260 if (!data.WriteCString(param->sessionName)) {
261 TRANS_LOGE(TRANS_SDK, "OpenSession write my session name failed!");
262 return SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED;
263 }
264 if (!data.WriteCString(param->peerSessionName)) {
265 TRANS_LOGE(TRANS_SDK, "OpenSession write peer session name failed!");
266 return SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED;
267 }
268 if (!data.WriteCString(param->peerDeviceId)) {
269 TRANS_LOGE(TRANS_SDK, "OpenSession write addr type length failed!");
270 return SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED;
271 }
272 if (!data.WriteCString(param->groupId)) {
273 TRANS_LOGE(TRANS_SDK, "OpenSession write addr type length failed!");
274 return SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED;
275 }
276
277 if (!TransWriteSessionAttrs(param->attr, data)) {
278 TRANS_LOGE(TRANS_SDK, "OpenSession write attr failed!");
279 return SOFTBUS_TRANS_PROXY_WRITERAWDATA_FAILED;
280 }
281
282 if (!WriteQosInfo(param, data)) {
283 TRANS_LOGE(TRANS_SDK, "OpenSession write qos failed!");
284 return SOFTBUS_TRANS_PROXY_WRITECSTRING_FAILED;
285 }
286
287 MessageParcel reply;
288 MessageOption option;
289 int32_t ret = remote->SendRequest(SERVER_OPEN_SESSION, data, reply, option);
290 if (ret != SOFTBUS_OK) {
291 TRANS_LOGE(TRANS_SDK, "OpenSession send request failed! ret=%{public}d", ret);
292 return SOFTBUS_TRANS_PROXY_SEND_REQUEST_FAILED;
293 }
294 TransSerializer *transSerializer = (TransSerializer *)reply.ReadRawData(sizeof(TransSerializer));
295 if (transSerializer == nullptr) {
296 TRANS_LOGE(TRANS_SDK, "OpenSession read TransSerializer failed!");
297 return SOFTBUS_TRANS_PROXY_READRAWDATA_FAILED;
298 }
299 info->channelId = transSerializer->transInfo.channelId;
300 info->channelType = transSerializer->transInfo.channelType;
301 return transSerializer->ret;
302 }
303
OpenAuthSession(const char * sessionName,const ConnectionAddr * addrInfo)304 int32_t TransServerProxy::OpenAuthSession(const char *sessionName, const ConnectionAddr *addrInfo)
305 {
306 if (sessionName == nullptr || addrInfo == nullptr) {
307 return SOFTBUS_INVALID_PARAM;
308 }
309 char *tmpName = nullptr;
310 Anonymize(sessionName, &tmpName);
311 TRANS_LOGI(TRANS_SDK, "ServerIpcOpenAuthSession begin. sessionName=%{public}s", tmpName);
312 AnonymizeFree(tmpName);
313 sptr<IRemoteObject> remote = Remote();
314 if (remote == nullptr) {
315 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
316 return SOFTBUS_ERR;
317 }
318
319 MessageParcel data;
320 if (!data.WriteInterfaceToken(GetDescriptor())) {
321 TRANS_LOGE(TRANS_SDK, "OpenSession write InterfaceToken failed!");
322 return SOFTBUS_ERR;
323 }
324 if (!data.WriteCString(sessionName)) {
325 TRANS_LOGE(TRANS_SDK, "OpenSession write my session name failed!");
326 return SOFTBUS_ERR;
327 }
328 if (!data.WriteRawData((void *)addrInfo, sizeof(ConnectionAddr))) {
329 TRANS_LOGE(TRANS_SDK, "OpenSession write ConnectionAddr failed!");
330 return SOFTBUS_ERR;
331 }
332
333 MessageParcel reply;
334 MessageOption option;
335 int32_t ret = remote->SendRequest(SERVER_OPEN_AUTH_SESSION, data, reply, option);
336 if (ret != SOFTBUS_OK) {
337 TRANS_LOGE(TRANS_SDK, "OpenSession send request failed! ret=%{public}d", ret);
338 return SOFTBUS_ERR;
339 }
340 int32_t channelId = 0;
341 if (!reply.ReadInt32(channelId)) {
342 TRANS_LOGE(TRANS_SDK, "OpenSession read channelId failed!");
343 return SOFTBUS_ERR;
344 }
345 return channelId;
346 }
347
NotifyAuthSuccess(int32_t channelId,int32_t channelType)348 int32_t TransServerProxy::NotifyAuthSuccess(int32_t channelId, int32_t channelType)
349 {
350 sptr<IRemoteObject> remote = GetSystemAbility();
351 if (remote == nullptr) {
352 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
353 return SOFTBUS_ERR;
354 }
355 MessageParcel data;
356 if (!data.WriteInterfaceToken(GetDescriptor())) {
357 TRANS_LOGE(TRANS_SDK, "ServerIpcNotifyAuthSuccess write InterfaceToken failed!");
358 return SOFTBUS_ERR;
359 }
360 if (!data.WriteInt32(channelId)) {
361 TRANS_LOGE(TRANS_SDK, "ServerIpcNotifyAuthSuccess write channel id failed!");
362 return SOFTBUS_ERR;
363 }
364 if (!data.WriteInt32(channelType)) {
365 TRANS_LOGE(TRANS_SDK, "ServerIpcNotifyAuthSuccess write channel type failed!");
366 return SOFTBUS_ERR;
367 }
368
369 MessageParcel reply;
370 MessageOption option;
371 int32_t ret = remote->SendRequest(SERVER_NOTIFY_AUTH_SUCCESS, data, reply, option);
372 if (ret != SOFTBUS_OK) {
373 TRANS_LOGE(TRANS_SDK,
374 "ServerIpcNotifyAuthSuccess send request failed! ret=%{public}d", ret);
375 return SOFTBUS_ERR;
376 }
377 int32_t serverRet = 0;
378 if (!reply.ReadInt32(serverRet)) {
379 TRANS_LOGE(TRANS_SDK, "ServerIpcNotifyAuthSuccess read serverRet failed!");
380 return SOFTBUS_ERR;
381 }
382 return serverRet;
383 }
384
CloseChannel(int32_t channelId,int32_t channelType)385 int32_t TransServerProxy::CloseChannel(int32_t channelId, int32_t channelType)
386 {
387 sptr<IRemoteObject> remote = GetSystemAbility();
388 if (remote == nullptr) {
389 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
390 return SOFTBUS_ERR;
391 }
392 MessageParcel data;
393 if (!data.WriteInterfaceToken(GetDescriptor())) {
394 TRANS_LOGE(TRANS_SDK, "CloseChannel write InterfaceToken failed!");
395 return SOFTBUS_ERR;
396 }
397 if (!data.WriteInt32(channelId)) {
398 TRANS_LOGE(TRANS_SDK, "CloseChannel write channel id failed!");
399 return SOFTBUS_ERR;
400 }
401 if (!data.WriteInt32(channelType)) {
402 TRANS_LOGE(TRANS_SDK, "CloseChannel write channel type failed!");
403 return SOFTBUS_ERR;
404 }
405
406 MessageParcel reply;
407 MessageOption option;
408 int32_t ret = remote->SendRequest(SERVER_CLOSE_CHANNEL, data, reply, option);
409 if (ret != SOFTBUS_OK) {
410 TRANS_LOGE(TRANS_SDK, "CloseChannel send request failed! ret=%{public}d", ret);
411 return SOFTBUS_ERR;
412 }
413 int32_t serverRet = 0;
414 if (!reply.ReadInt32(serverRet)) {
415 TRANS_LOGE(TRANS_SDK, "CloseChannel read serverRet failed!");
416 return SOFTBUS_ERR;
417 }
418 return serverRet;
419 }
420
SendMessage(int32_t channelId,int32_t channelType,const void * dataInfo,uint32_t len,int32_t msgType)421 int32_t TransServerProxy::SendMessage(int32_t channelId, int32_t channelType, const void *dataInfo,
422 uint32_t len, int32_t msgType)
423 {
424 sptr<IRemoteObject> remote = Remote();
425 if (remote == nullptr) {
426 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
427 return SOFTBUS_ERR;
428 }
429 MessageParcel data;
430 if (!data.WriteInterfaceToken(GetDescriptor())) {
431 TRANS_LOGE(TRANS_SDK, "SendMessage write InterfaceToken failed!");
432 return SOFTBUS_ERR;
433 }
434 if (!data.WriteInt32(channelId)) {
435 TRANS_LOGE(TRANS_SDK, "SendMessage write channel id failed!");
436 return SOFTBUS_ERR;
437 }
438 if (!data.WriteInt32(channelType)) {
439 TRANS_LOGE(TRANS_SDK, "SendMessage write channel type failed!");
440 return SOFTBUS_ERR;
441 }
442 if (!data.WriteUint32(len)) {
443 TRANS_LOGE(TRANS_SDK, "SendMessage write dataInfo len failed!");
444 return SOFTBUS_ERR;
445 }
446 if (!data.WriteRawData(dataInfo, len)) {
447 TRANS_LOGE(TRANS_SDK, "SendMessage write dataInfo failed!");
448 return SOFTBUS_ERR;
449 }
450 if (!data.WriteInt32(msgType)) {
451 TRANS_LOGE(TRANS_SDK, "SendMessage msgType failed!");
452 return SOFTBUS_ERR;
453 }
454
455 MessageParcel reply;
456 MessageOption option;
457 int32_t ret = remote->SendRequest(SERVER_SESSION_SENDMSG, data, reply, option);
458 if (ret != SOFTBUS_OK) {
459 TRANS_LOGE(TRANS_SDK, "SendMessage send request failed! ret=%{public}d", ret);
460 return SOFTBUS_ERR;
461 }
462 int32_t serverRet = 0;
463 if (!reply.ReadInt32(serverRet)) {
464 TRANS_LOGE(TRANS_SDK, "SendMessage read serverRet failed!");
465 return SOFTBUS_ERR;
466 }
467 return serverRet;
468 }
469
QosReport(int32_t channelId,int32_t chanType,int32_t appType,int32_t quality)470 int32_t TransServerProxy::QosReport(int32_t channelId, int32_t chanType, int32_t appType, int32_t quality)
471 {
472 sptr<IRemoteObject> remote = GetSystemAbility();
473 if (remote == nullptr) {
474 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
475 return SOFTBUS_ERR;
476 }
477 MessageParcel data;
478 if (!data.WriteInterfaceToken(GetDescriptor())) {
479 TRANS_LOGE(TRANS_SDK, "QosReport write InterfaceToken failed!");
480 return SOFTBUS_ERR;
481 }
482 if (!data.WriteInt32(channelId)) {
483 TRANS_LOGE(TRANS_SDK, "QosReport channelId failed!");
484 return SOFTBUS_ERR;
485 }
486 if (!data.WriteInt32(chanType)) {
487 TRANS_LOGE(TRANS_SDK, "QosReport chanType failed!");
488 return SOFTBUS_ERR;
489 }
490 if (!data.WriteInt32(appType)) {
491 TRANS_LOGE(TRANS_SDK, "QosReport appType failed!");
492 return SOFTBUS_ERR;
493 }
494 if (!data.WriteInt32(quality)) {
495 TRANS_LOGE(TRANS_SDK, "QosReport quality failed!");
496 return SOFTBUS_ERR;
497 }
498
499 MessageParcel reply;
500 MessageOption option;
501 int32_t ret = remote->SendRequest(SERVER_QOS_REPORT, data, reply, option);
502 if (ret != SOFTBUS_OK) {
503 TRANS_LOGE(TRANS_SDK, "QosReport send request failed! ret=%{public}d", ret);
504 return SOFTBUS_ERR;
505 }
506 int32_t serverRet = 0;
507 if (!reply.ReadInt32(serverRet)) {
508 TRANS_LOGE(TRANS_SDK, "QosReport read serverRet failed!");
509 return SOFTBUS_ERR;
510 }
511 return serverRet;
512 }
513
StreamStats(int32_t channelId,int32_t channelType,const StreamSendStats * statsData)514 int32_t TransServerProxy::StreamStats(int32_t channelId, int32_t channelType, const StreamSendStats *statsData)
515 {
516 sptr<IRemoteObject> remote = GetSystemAbility();
517 if (remote == nullptr) {
518 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
519 return SOFTBUS_ERR;
520 }
521 MessageParcel data;
522 if (!data.WriteInterfaceToken(GetDescriptor())) {
523 TRANS_LOGE(TRANS_SDK, "StreamStats write InterfaceToken failed!");
524 return SOFTBUS_ERR;
525 }
526 if (!data.WriteInt32(channelId)) {
527 TRANS_LOGE(TRANS_SDK, "StreamStats channelId failed!");
528 return SOFTBUS_ERR;
529 }
530 if (!data.WriteInt32(channelType)) {
531 TRANS_LOGE(TRANS_SDK, "StreamStats channelType failed!");
532 return SOFTBUS_ERR;
533 }
534 if (!data.WriteRawData((void *)statsData, sizeof(StreamSendStats))) {
535 TRANS_LOGE(TRANS_SDK, "write streamSendStats failed!");
536 return SOFTBUS_ERR;
537 }
538 MessageParcel reply;
539 MessageOption option;
540 int32_t ret = remote->SendRequest(SERVER_STREAM_STATS, data, reply, option);
541 if (ret != SOFTBUS_OK) {
542 TRANS_LOGE(TRANS_SDK, "StreamStats send request failed, ret=%{public}d", ret);
543 return SOFTBUS_ERR;
544 }
545 if (!reply.ReadInt32(ret)) {
546 TRANS_LOGE(TRANS_SDK, "StreamStats read serverRet failed");
547 return SOFTBUS_ERR;
548 }
549 return ret;
550 }
551
RippleStats(int32_t channelId,int32_t channelType,const TrafficStats * statsData)552 int32_t TransServerProxy::RippleStats(int32_t channelId, int32_t channelType, const TrafficStats *statsData)
553 {
554 sptr<IRemoteObject> remote = GetSystemAbility();
555 if (remote == nullptr) {
556 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
557 return SOFTBUS_ERR;
558 }
559 MessageParcel data;
560 if (!data.WriteInterfaceToken(GetDescriptor())) {
561 TRANS_LOGE(TRANS_SDK, "RippleStats write InterfaceToken failed!");
562 return SOFTBUS_ERR;
563 }
564 if (!data.WriteInt32(channelId)) {
565 TRANS_LOGE(TRANS_SDK, "RippleStats channelId failed!");
566 return SOFTBUS_ERR;
567 }
568 if (!data.WriteInt32(channelType)) {
569 TRANS_LOGE(TRANS_SDK, "RippleStats channelType failed!");
570 return SOFTBUS_ERR;
571 }
572 if (!data.WriteRawData((void *)statsData, sizeof(TrafficStats))) {
573 TRANS_LOGE(TRANS_SDK, "write RippleStats failed!");
574 return SOFTBUS_ERR;
575 }
576 MessageParcel reply;
577 MessageOption option;
578 int32_t ret = remote->SendRequest(SERVER_RIPPLE_STATS, data, reply, option);
579 if (ret != SOFTBUS_OK) {
580 TRANS_LOGE(TRANS_SDK, "RippleStats send request failed, ret=%{public}d", ret);
581 return SOFTBUS_ERR;
582 }
583 if (!reply.ReadInt32(ret)) {
584 TRANS_LOGE(TRANS_SDK, "RippleStats read serverRet failed");
585 return SOFTBUS_ERR;
586 }
587 return ret;
588 }
589
GrantPermission(int uid,int pid,const char * sessionName)590 int32_t TransServerProxy::GrantPermission(int uid, int pid, const char *sessionName)
591 {
592 sptr<IRemoteObject> remote = GetSystemAbility();
593 if (remote == nullptr) {
594 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
595 return SOFTBUS_ERR;
596 }
597 MessageParcel data;
598 if (!data.WriteInterfaceToken(GetDescriptor())) {
599 TRANS_LOGE(TRANS_SDK, "GrantPermission write InterfaceToken failed!");
600 return SOFTBUS_ERR;
601 }
602 if (!data.WriteInt32(uid)) {
603 TRANS_LOGE(TRANS_SDK, "GrantPermission write uid failed!");
604 return SOFTBUS_ERR;
605 }
606 if (!data.WriteInt32(pid)) {
607 TRANS_LOGE(TRANS_SDK, "GrantPermission write pid failed!");
608 return SOFTBUS_ERR;
609 }
610 if (!data.WriteCString(sessionName)) {
611 TRANS_LOGE(TRANS_SDK, "GrantPermission write sessionName failed!");
612 return SOFTBUS_ERR;
613 }
614
615 MessageParcel reply;
616 MessageOption option;
617 int32_t ret = remote->SendRequest(SERVER_GRANT_PERMISSION, data, reply, option);
618 if (ret != ERR_NONE) {
619 TRANS_LOGE(TRANS_SDK, "GrantPermission send request failed, ret=%{public}d", ret);
620 return SOFTBUS_ERR;
621 }
622 if (!reply.ReadInt32(ret)) {
623 TRANS_LOGE(TRANS_SDK, "GrantPermission read serverRet failed!");
624 return SOFTBUS_ERR;
625 }
626 return ret;
627 }
628
RemovePermission(const char * sessionName)629 int32_t TransServerProxy::RemovePermission(const char *sessionName)
630 {
631 sptr<IRemoteObject> remote = GetSystemAbility();
632 if (remote == nullptr) {
633 TRANS_LOGE(TRANS_SDK, "remote is nullptr!");
634 return SOFTBUS_ERR;
635 }
636 MessageParcel data;
637 if (!data.WriteInterfaceToken(GetDescriptor())) {
638 TRANS_LOGE(TRANS_SDK, "RemovePermission write InterfaceToken failed!");
639 return SOFTBUS_ERR;
640 }
641 if (!data.WriteCString(sessionName)) {
642 TRANS_LOGE(TRANS_SDK, "RemovePermission write sessionName failed!");
643 return SOFTBUS_ERR;
644 }
645
646 MessageParcel reply;
647 MessageOption option;
648 int32_t ret = remote->SendRequest(SERVER_REMOVE_PERMISSION, data, reply, option);
649 if (ret != ERR_NONE) {
650 TRANS_LOGE(TRANS_SDK, "RemovePermission send request failed, ret=%{public}d", ret);
651 return SOFTBUS_ERR;
652 }
653 if (!reply.ReadInt32(ret)) {
654 TRANS_LOGE(TRANS_SDK, "RemovePermission read serverRet failed!");
655 return SOFTBUS_ERR;
656 }
657 return ret;
658 }
659
JoinLNN(const char * pkgName,void * addr,uint32_t addrTypeLen)660 int32_t TransServerProxy::JoinLNN(const char *pkgName, void *addr, uint32_t addrTypeLen)
661 {
662 (void)pkgName;
663 (void)addr;
664 (void)addrTypeLen;
665 return SOFTBUS_OK;
666 }
667
LeaveLNN(const char * pkgName,const char * networkId)668 int32_t TransServerProxy::LeaveLNN(const char *pkgName, const char *networkId)
669 {
670 (void)pkgName;
671 (void)networkId;
672 return SOFTBUS_OK;
673 }
674
GetAllOnlineNodeInfo(const char * pkgName,void ** info,uint32_t infoTypeLen,int * infoNum)675 int32_t TransServerProxy::GetAllOnlineNodeInfo(const char *pkgName, void **info, uint32_t infoTypeLen, int *infoNum)
676 {
677 (void)pkgName;
678 (void)info;
679 (void)infoTypeLen;
680 (void)infoNum;
681 return SOFTBUS_OK;
682 }
683
GetLocalDeviceInfo(const char * pkgName,void * info,uint32_t infoTypeLen)684 int32_t TransServerProxy::GetLocalDeviceInfo(const char *pkgName, void *info, uint32_t infoTypeLen)
685 {
686 (void)pkgName;
687 (void)info;
688 (void)infoTypeLen;
689 return SOFTBUS_OK;
690 }
691
GetNodeKeyInfo(const char * pkgName,const char * networkId,int key,unsigned char * buf,uint32_t len)692 int32_t TransServerProxy::GetNodeKeyInfo(const char *pkgName, const char *networkId, int key, unsigned char *buf,
693 uint32_t len)
694 {
695 (void)pkgName;
696 (void)networkId;
697 (void)key;
698 (void)buf;
699 (void)len;
700 return SOFTBUS_OK;
701 }
702
SetNodeDataChangeFlag(const char * pkgName,const char * networkId,uint16_t dataChangeFlag)703 int32_t TransServerProxy::SetNodeDataChangeFlag(const char *pkgName, const char *networkId, uint16_t dataChangeFlag)
704 {
705 (void)pkgName;
706 (void)networkId;
707 (void)dataChangeFlag;
708 return SOFTBUS_OK;
709 }
710
StartTimeSync(const char * pkgName,const char * targetNetworkId,int32_t accuracy,int32_t period)711 int32_t TransServerProxy::StartTimeSync(const char *pkgName, const char *targetNetworkId, int32_t accuracy,
712 int32_t period)
713 {
714 (void)pkgName;
715 (void)targetNetworkId;
716 (void)accuracy;
717 (void)period;
718 return SOFTBUS_OK;
719 }
720
StopTimeSync(const char * pkgName,const char * targetNetworkId)721 int32_t TransServerProxy::StopTimeSync(const char *pkgName, const char *targetNetworkId)
722 {
723 (void)pkgName;
724 (void)targetNetworkId;
725 return SOFTBUS_OK;
726 }
727
GetSoftbusSpecObject(sptr<IRemoteObject> & object)728 int32_t TransServerProxy::GetSoftbusSpecObject(sptr<IRemoteObject> &object)
729 {
730 sptr<IRemoteObject> remote = GetSystemAbility();
731 if (remote == nullptr) {
732 TRANS_LOGE(TRANS_SDK, "remote is null");
733 return SOFTBUS_ERR;
734 }
735 MessageParcel data;
736 if (!data.WriteInterfaceToken(GetDescriptor())) {
737 TRANS_LOGE(TRANS_SDK, "GetSoftbusSpecObject write InterfaceToken failed!");
738 return SOFTBUS_ERR;
739 }
740 MessageParcel reply;
741 MessageOption option;
742 int32_t ret = remote->SendRequest(SERVER_GET_SOFTBUS_SPEC_OBJECT, data, reply, option);
743 if (ret != ERR_NONE) {
744 TRANS_LOGE(TRANS_SDK, "GetSoftbusSpecObject send request failed, ret=%{public}d",
745 ret);
746 return SOFTBUS_ERR;
747 }
748 if (!reply.ReadInt32(ret)) {
749 TRANS_LOGE(TRANS_SDK, "GetSoftbusSpecObject send ret failed");
750 return SOFTBUS_ERR;
751 }
752 if (ret == SOFTBUS_OK) {
753 object = reply.ReadRemoteObject();
754 }
755 return ret;
756 }
757
EvaluateQos(const char * peerNetworkId,TransDataType dataType,const QosTV * qos,uint32_t qosCount)758 int32_t TransServerProxy::EvaluateQos(const char *peerNetworkId, TransDataType dataType, const QosTV *qos,
759 uint32_t qosCount)
760 {
761 sptr<IRemoteObject> remote = GetSystemAbility();
762 if (remote == nullptr) {
763 TRANS_LOGE(TRANS_SDK, "remote is null");
764 return SOFTBUS_IPC_ERR;
765 }
766 MessageParcel data;
767
768 if (!data.WriteInterfaceToken(GetDescriptor())) {
769 TRANS_LOGE(TRANS_SDK, "EvaluateQos write InterfaceToken failed!");
770 return SOFTBUS_IPC_ERR;
771 }
772
773 if (!data.WriteCString(peerNetworkId)) {
774 TRANS_LOGE(TRANS_SDK, "EvaluateQos write peerNetworkId failed!");
775 return SOFTBUS_IPC_ERR;
776 }
777
778 if (!data.WriteInt32(dataType)) {
779 TRANS_LOGE(TRANS_SDK, "EvaluateQos write dataType failed!");
780 return SOFTBUS_IPC_ERR;
781 }
782
783 if (!data.WriteUint32(qosCount)) {
784 TRANS_LOGE(TRANS_SDK, "EvaluateQos write count of qos failed!");
785 return SOFTBUS_IPC_ERR;
786 }
787
788 if (qosCount > 0) {
789 if (!data.WriteBuffer(qos, sizeof(QosTV) * qosCount)) {
790 TRANS_LOGE(TRANS_SDK, "EvaluateQos write qos info failed!");
791 return SOFTBUS_IPC_ERR;
792 }
793 }
794
795 MessageParcel reply;
796 MessageOption option;
797 int32_t ret = remote->SendRequest(SERVER_EVALUATE_QOS, data, reply, option);
798 if (ret != ERR_NONE) {
799 TRANS_LOGE(TRANS_SDK, "EvaluateQos request failed, ret=%{public}d", ret);
800 return SOFTBUS_IPC_ERR;
801 }
802
803 if (!reply.ReadInt32(ret)) {
804 TRANS_LOGE(TRANS_SDK, "EvaluateQos read ret failed");
805 return SOFTBUS_IPC_ERR;
806 }
807
808 return ret;
809 }
810 } // namespace OHOS
811