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