• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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