• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 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 "socket_common.h"
17 
18 static int32_t g_currentSocket4Data = -1;
19 static int32_t g_waitFlag = WAIT_DEF_VALUE;
20 static int32_t g_waitFlag4Shutdown = WAIT_DEF_VALUE;
21 static int32_t g_waitFlag4Byte = WAIT_DEF_VALUE;
22 static int32_t g_waitFlag4Message = WAIT_DEF_VALUE;
23 static int32_t g_waitFlagStream = WAIT_DEF_VALUE;
24 static int32_t g_waitFlag4File = WAIT_DEF_VALUE;
25 static int32_t g_nodeOnlineCount = 0;
26 static int32_t g_nodeOfflineCount = 0;
27 static ISocketListener* g_socketlistenerdata = NULL;
28 static char g_networkId[NETWORK_ID_BUF_LEN] = { 0 };
29 static INodeStateCb g_defNodeStateCallback;
30 static ConnectionAddr g_ethAddr = {
31     .type = CONNECTION_ADDR_WLAN,
32 };
33 static char g_fillContentChar = 'd';
34 static unsigned int g_expectDataSize = 0;
35 static char* g_expectDataContent = NULL;
36 
37 /* discovery */
38 static IDiscoveryCallback g_defDiscCallback;
39 
40 /*reset count*/
ResetwaitCount4Online(void)41 void ResetwaitCount4Online(void)
42 {
43     g_nodeOnlineCount = 0;
44 }
45 
46 /*common method*/
ResetwaitCount4Offline(void)47 void ResetwaitCount4Offline(void)
48 {
49     g_nodeOfflineCount = 0;
50 }
51 
Sleepn(int n)52 void Sleepn(int n)
53 {
54     for(int i = 0; i < n; i++) {
55         sleep(1);
56         LOG("sleeped %d", i);
57     }
58 }
59 
GetSoftbusPid(void)60 char* GetSoftbusPid(void)
61 {
62     FILE* file = NULL;
63     int buffSize = 20;
64     char* buffer = (char*)malloc(buffSize);
65     if (buffer == NULL) {
66         LOG("malloc fail");
67         return NULL;
68     }
69 
70     file = popen(CMD_PIDOF_SOFTBUS, "r");
71     if (file == NULL) {
72         LOG("call popen fail");
73         free(buffer);
74         return NULL;
75     }
76     (void)fgets(buffer, buffSize, file);
77     LOG("##################Softbus PID:%s", buffer);
78     pclose(file);
79 
80     return buffer;
81 }
82 
OnDefDeviceFound(const DeviceInfo * device)83 static void OnDefDeviceFound(const DeviceInfo* device)
84 {
85     if (device == NULL) {
86         LOG("[cb]device found,but is null");
87         g_waitFlag = WAIT_FAIL_VALUE;
88         return;
89     }
90 
91     uint16_t port = device->addr[0].info.ip.port;
92     char ipTmp[IP_STR_MAX_LEN];
93     if (strncpy_s(ipTmp, IP_STR_MAX_LEN, device->addr[0].info.ip.ip, strlen(device->addr[0].info.ip.ip)) != 0) {
94         LOG("[cb]device found, strncpy_s ipTmp fail");
95         return;
96     }
97     LOG("[cb]device found, type:%d", device->addr[0].type);
98     LOG("[cb]device found, addr:%s, prot:%d", ipTmp, port);
99 
100     g_ethAddr.info.ip.port = port;
101     if (strncpy_s(g_ethAddr.info.ip.ip, IP_STR_MAX_LEN, ipTmp, strlen(ipTmp)) != 0) {
102         LOG("[cb]device found, strncpy_s ip fail");
103         g_waitFlag = WAIT_FAIL_VALUE;
104         return;
105     }
106 
107     g_waitFlag = WAIT_SUCCESS_VALUE;
108 }
109 
OnDefDiscoverFail(int subscribeId,DiscoveryFailReason failReason)110 static void OnDefDiscoverFail(int subscribeId, DiscoveryFailReason failReason)
111 {
112     LOG("[cb]discover fail, sub id:%d, reason:%d", subscribeId, failReason);
113 }
114 
OnDefDiscoverSuccess(int subscribeId)115 static void OnDefDiscoverSuccess(int subscribeId)
116 {
117     LOG("[cb]discover success, sub id:%d", subscribeId);
118 }
119 
OnDefNodeOnline(NodeBasicInfo * info)120 static void OnDefNodeOnline(NodeBasicInfo* info)
121 {
122     if (info == NULL) {
123         LOG("[cb]Online: info is null");
124         return;
125     }
126     (void)strncpy_s(g_networkId, NETWORK_ID_BUF_LEN, info->networkId, NETWORK_ID_BUF_LEN);
127     LOG("[cb]Online id:%s, name:%s, type id:%u", info->networkId, info->deviceName, info->deviceTypeId);
128     g_nodeOnlineCount++;
129 }
130 
OnDefNodeOffline(NodeBasicInfo * info)131 static void OnDefNodeOffline(NodeBasicInfo* info)
132 {
133     if (info == NULL) {
134         LOG("[cb]Offline: info is null");
135         return;
136     }
137     LOG("[cb]Offline id:%s, name:%s, type id:%u", info->networkId, info->deviceName, info->deviceTypeId);
138     g_nodeOfflineCount++;
139 }
140 
OnDefNodeBasicInfoChanged(NodeBasicInfoType type,NodeBasicInfo * info)141 static void OnDefNodeBasicInfoChanged(NodeBasicInfoType type, NodeBasicInfo* info)
142 {
143     if (info == NULL) {
144         LOG("[cb]InfoChanged: info is null, type[%d]", type);
145         return;
146     }
147     LOG("[cb]InfoChanged id: %s,name: %s", info->networkId, info->deviceName);
148 }
149 
onDefNodeStatusChanged(NodeStatusType type,NodeStatus * status)150 static void onDefNodeStatusChanged(NodeStatusType type, NodeStatus *status)
151 {
152     if (status == NULL) {
153         LOG("[cb]StatusChanged: info is null, type[%d]", type);
154         return;
155     }
156     LOG("[cb]StatusChanged id: %s,status: %d", status->basicInfo.networkId, status->authStatus);
157 }
158 
RegisterDeviceStateDefCallback(void)159 int RegisterDeviceStateDefCallback(void)
160 {
161     return RegNodeDeviceStateCb(DEF_PKG_NAME, &g_defNodeStateCallback);
162 }
163 
UnRegisterDeviceStateDefCallback(void)164 int UnRegisterDeviceStateDefCallback(void)
165 {
166     return UnregNodeDeviceStateCb(&g_defNodeStateCallback);
167 }
168 
WaitNodeCount(int timeout,WaitNodeStateType state,int expectCount)169 int WaitNodeCount(int timeout, WaitNodeStateType state, int expectCount)
170 {
171     LOG("Wait4Node,timeout:%d, type:%d, exp count:%d", timeout, state, expectCount);
172     int hitFlag = -1;
173     while (timeout > 0) {
174         sleep(ONE_SECOND);
175         switch (state) {
176             case STATE_ONLINE:
177                 if (g_nodeOnlineCount == expectCount) {
178                     LOG("Wait4Node[online] succ,timeout:%d", timeout);
179                     hitFlag = 1;
180                 }
181                 break;
182             case STATE_OFFLINE:
183                 if (g_nodeOfflineCount == expectCount) {
184                     LOG("Wait4Node[offline] succ,timeout:%d", timeout);
185                     hitFlag = 1;
186                 }
187                 break;
188             default:
189                 LOG("Wait4Node state error");
190                 hitFlag = 1;
191                 break;
192         }
193         if (hitFlag != -1) {
194             break;
195         }
196         timeout--;
197     }
198     switch (state) {
199         case STATE_ONLINE:
200             if (g_nodeOnlineCount != expectCount) {
201                 LOG("Wait4Node[online] fail[exp:%d, real:%d]", expectCount, g_nodeOnlineCount);
202                 return SOFTBUS_ERR;
203             }
204             break;
205         case STATE_OFFLINE:
206             if (g_nodeOfflineCount != expectCount) {
207                 LOG("Wait4Node[offline] fail[exp:%d, real:%d]", expectCount, g_nodeOfflineCount);
208                 return SOFTBUS_ERR;
209             }
210             break;
211         default:
212             return SOFTBUS_ERR;
213     }
214     return SOFTBUS_OK;
215 }
216 
217 //socket callback
OnBindData(int32_t socket,PeerSocketInfo info)218 static void OnBindData(int32_t socket, PeerSocketInfo info)
219 {
220     int successcount = 0;
221     LOG("[cb][Ctrl]OnBind success  {socket:%d, name:%s, deviceId:%s, pkgName:%s, dataType:%d}", socket,
222        info.name, info.networkId, info.pkgName, info.dataType);
223     if (strcmp(info.networkId, g_networkId) != 0)
224     {
225         LOG("PeerSocket Info peer deviceId and check remote networkId are diff");
226         successcount++;
227     }
228     if (strcmp(info.name, SOCKET_NAME_BYTE) != 0)
229     {
230         LOG("PeerSocket Info peer name and local name are diff");
231         successcount++;
232     }
233     if (strcmp(info.pkgName, DEF_PKG_NAME) != 0)
234     {
235         LOG("PeerSocket Info peer pkgName and local pkgName are diff");
236         successcount++;
237     }
238     if(successcount == 3)
239     {
240        g_waitFlag = WAIT_SUCCESS_VALUE;
241     }else{
242        g_waitFlag = WAIT_FAIL_VALUE;
243     }
244 }
245 
OnShutdownData(int32_t socket,ShutdownReason reason)246 static void OnShutdownData(int32_t socket, ShutdownReason reason)
247 {
248     LOG("[cb][Ctrl]OnShutdownData success  {socket:%d, reason:%u}", socket, reason);
249     if (reason == SHUTDOWN_REASON_PEER || reason == SHUTDOWN_REASON_LOCAL)
250     {
251         g_waitFlag4Shutdown = WAIT_SUCCESS_VALUE;
252     }else{
253         g_waitFlag4Shutdown = WAIT_FAIL_VALUE;
254     }
255 }
256 
CheckReceiveSocketData(int socket,const void * data,unsigned int dataLen)257 static int CheckReceiveSocketData(int socket, const void *data, unsigned int dataLen)
258 {
259     if (socket == g_currentSocket4Data && dataLen == g_expectDataSize)
260     {
261         LOG("[check]socket/size ok socket:%d, size:%d", socket, dataLen);
262     }else
263     {
264         LOG("[check]socket/size failed socket :%d, expectsocket:%d, size:%d, expectsize:%d",
265          socket, g_currentSocket4Data, dataLen, g_expectDataSize);
266          return SOFTBUS_ERR;
267     }
268     if (g_expectDataContent == NULL)
269     {
270         LOG("[check]socket  Datacunt is null !!!");
271         return SOFTBUS_ERR;
272     }else
273     {
274         int cmpRst = strncmp(g_expectDataContent, (char*)data, dataLen);
275         if (cmpRst == 0) {
276            LOG("[check] cmp content ok");
277            return SOFTBUS_OK;
278         } else {
279            LOG("[check] cmp content fail[exp:%s,real:%s]", g_expectDataContent, (char*)data);
280            return SOFTBUS_ERR;
281         }
282     }
283 }
284 
OnByteData(int32_t socket,const void * data,uint32_t dataLen)285 static void OnByteData(int32_t socket, const void *data, uint32_t dataLen)
286 {
287     LOG("[cb] OnByteData socket:%d", socket);
288     int ret = CheckReceiveSocketData(socket, data, dataLen);
289     if (ret == SOFTBUS_OK)
290     {
291         g_waitFlag4Byte = WAIT_SUCCESS_VALUE;
292         LOG("[cb] OnByteData data recv success");
293     }else
294     {
295         g_waitFlag4Byte = WAIT_FAIL_VALUE;
296         LOG("[cb] OnByteData data recv failed");
297     }
298 }
299 
OnMessageData(int32_t socket,const void * data,uint32_t dataLen)300 static void OnMessageData(int32_t socket, const void *data, uint32_t dataLen)
301 {
302     LOG("[cb] OnMessageData socket:%d", socket);
303     int ret = CheckReceiveSocketData(socket, data, dataLen);
304     if (ret == SOFTBUS_OK)
305     {
306         g_waitFlag4Message = WAIT_SUCCESS_VALUE;
307         LOG("[cb] OnMessageData data recv success");
308     }else
309     {
310         g_waitFlag4Message = WAIT_FAIL_VALUE;
311         LOG("[cb] OnMessageData data recv failed");
312     }
313 }
314 
OnStreamData(int32_t socket,const StreamData * data,const StreamData * ext,const StreamFrameInfo * param)315 static void OnStreamData(int32_t socket, const StreamData *data, const StreamData *ext, const StreamFrameInfo *param)
316 {
317     if (socket < 0) {
318         LOG("[cb][data]OnStream invalid socket id[%d]", socket);
319         return;
320     }
321     if (data == NULL) {
322         LOG("[cb][data]OnStream socket id[%d], data is NULL", socket);
323         return;
324     }
325     if (ext == NULL) {
326         LOG("[cb][data]OnStream socket id[%d], ext is NULL", socket);
327         return;
328     }
329     if (param == NULL) {
330         LOG("[cb][data]OnStream socket id[%d], param is NULL", socket);
331         return;
332     }
333     LOG("[cb][data]OnStream Success socket:%d,", socket);
334     LOG("[cb][data]OnStream Success buf:%s,", (data->buf != NULL ? data->buf : "null"));
335     LOG("[cb][data]OnStream Success buflen:%d", data->bufLen);
336     LOG("[cb][data]OnStream Success buf:%s,", (ext->buf != NULL ? ext->buf : "null"));
337     g_waitFlagStream = WAIT_SUCCESS_VALUE;
338 }
339 
ClientUpdataRecvFilePath()340 static const char *ClientUpdataRecvFilePath() {
341     return "/data/";
342 }
343 
OnFileData(int32_t socket,FileEvent * event)344 static void OnFileData(int32_t socket, FileEvent *event)
345 {
346     if (socket < 0) {
347         LOG("[cb][data]OnFile invalid socket id[%d]", socket);
348         return;
349     }
350     if (event == NULL) {
351         LOG("[cb][data]OnFile socket id[%d], event is nullptr", socket);
352         return;
353     }
354     if (event->type == FILE_EVENT_RECV_UPDATE_PATH) {
355         LOG("[cb][data]OnFile event type:%d,", event->type);
356         event->UpdateRecvPath = ClientUpdataRecvFilePath;
357         return;
358     }
359     LOG("[cb][data]OnFile, event type:%d, fileCnt:%u", event->type, event->fileCnt);
360     for (uint32_t i = 0; i < event->fileCnt; i++) {
361         LOG("[cb][data] %s", (event->files[i] == NULL ? "null" : event->files[i]));
362     }
363     if (event->type == FILE_EVENT_SEND_FINISH) {
364         LOG("[cb][data]OnFile recv finished");
365         g_waitFlag4File = WAIT_SUCCESS_VALUE;
366         return;
367     }
368     if (event->type == FILE_EVENT_SEND_PROCESS) {
369         LOG("[cb][data]OnFile recv process");
370         return;
371     }
372     if (event->type == FILE_EVENT_SEND_ERROR) {
373         LOG("[cb][data]OnFile recv error!!");
374         g_waitFlag4File = WAIT_FAIL_VALUE;
375         return;
376     }
377 }
378 
OnQosData(int32_t socket,QoSEvent eventId,const QosTV * qos,uint32_t qosCunt)379 static void OnQosData(int32_t socket, QoSEvent eventId, const QosTV *qos, uint32_t qosCunt)
380 {
381     LOG("[cb][data] OnQos {socket:%d, event:%d}", socket, eventId);
382 }
383 
Wait4Socket(int timeout,WaitSocketType type)384 int Wait4Socket(int timeout, WaitSocketType type)
385 {
386     int hitFlag = -1;
387     int t = timeout;
388     while (t > 0) {
389         sleep(1);
390         switch (type) {
391             case SOCKET_BYTES:
392                 if (g_waitFlag4Byte != WAIT_DEF_VALUE) {
393                     LOG("Wait4socket[Byte] succ, flag:%d", g_waitFlag4Byte);
394                     hitFlag = 1;
395                 }
396                 break;
397             case SOCKET_MSG:
398                 if (g_waitFlag4Message != WAIT_DEF_VALUE) {
399                     LOG("Wait4socket[Message] succ,flag:%d", g_waitFlag4Message);
400                     hitFlag = 1;
401                 }
402                 break;
403             case SOCKET_FILE:
404                 if (g_waitFlag4File != WAIT_DEF_VALUE) {
405                     LOG("Wait4socket[File] succ,flag:%d", g_waitFlag4File);
406                     hitFlag = 1;
407                 }
408                 break;
409             case SOCKET_STREAM:
410                 if (g_waitFlagStream != WAIT_DEF_VALUE) {
411                     LOG("Wait4socket[Stream] succ,flag:%d", g_waitFlagStream);
412                     hitFlag = 1;
413                 }
414                 break;
415             case SOCKET_SHUTDOWN:
416                 if (g_waitFlag4Shutdown != WAIT_DEF_VALUE) {
417                     LOG("Wait4socket[SHUTDOWN] succ,flag:%d", g_waitFlag4Shutdown);
418                     hitFlag = 1;
419                 }
420                 break;
421             default:
422                 LOG("Wait4socket type error");
423                 hitFlag = 1;
424                 break;
425         }
426         if (hitFlag != -1) {
427             break;
428         }
429         t--;
430     }
431     switch (type) {
432         case SOCKET_BYTES:
433             if (g_waitFlag4Byte != WAIT_SUCCESS_VALUE) {
434                 LOG("Wait4socket[Byte] fail[exp:%d, real:%d]", WAIT_SUCCESS_VALUE, g_waitFlag4Byte);
435                 return SOFTBUS_ERR;
436             }
437             break;
438         case SOCKET_MSG:
439             if (g_waitFlag4Message != WAIT_SUCCESS_VALUE) {
440                 LOG("Wait4socket[Message] fail[exp:%d, real:%d]", WAIT_SUCCESS_VALUE, g_waitFlag4Message);
441                 return SOFTBUS_ERR;
442             }
443             break;
444         case SOCKET_FILE:
445             if (g_waitFlag4File != WAIT_SUCCESS_VALUE) {
446                 LOG("Wait4socket[File] fail[exp:%d, real:%d]", WAIT_SUCCESS_VALUE, g_waitFlag4File);
447                 return SOFTBUS_ERR;
448             }
449             break;
450          case SOCKET_STREAM:
451             if (g_waitFlagStream != WAIT_SUCCESS_VALUE) {
452                 LOG("Wait4socket[Stream] fail[exp:%d, real:%d]", WAIT_SUCCESS_VALUE, g_waitFlagStream);
453                 return SOFTBUS_ERR;
454             }
455             break;
456          case SOCKET_SHUTDOWN:
457             if (g_waitFlag4Shutdown != WAIT_SUCCESS_VALUE) {
458                 LOG("Wait4socket[SHUTDOWN] fail[exp:%d, real:%d]", WAIT_SUCCESS_VALUE, g_waitFlag4Shutdown);
459                 return SOFTBUS_ERR;
460             }
461             break;
462         default:
463             return SOFTBUS_ERR;
464     }
465     return SOFTBUS_OK;
466 }
467 
SendSocket4Data(DataType type,int size)468 int SendSocket4Data(DataType type, int size)
469 {
470     int ret;
471     LOG("###SendSocket4Data  g_currentSocket4Data = %d ", g_currentSocket4Data );
472     if (size > 0) {
473         g_expectDataContent = (char*)calloc(1, size);
474         if (g_expectDataContent == NULL) {
475             LOG("[send data]calloc fail");
476             return SOFTBUS_ERR;
477         }
478         (void)memset_s(g_expectDataContent, size, g_fillContentChar, size);
479     } else {
480         LOG("[send data]invalid param[size>=1]");
481         return SOFTBUS_ERR;
482     }
483 
484     g_expectDataSize = size;
485 
486     if (type == DATA_TYPE_MSG) {
487         ret = SendMessage(g_currentSocket4Data, g_expectDataContent, size);
488         if (ret != SOFTBUS_OK) {
489             LOG("[send data]call SendX fail, ret:%d", ret);
490             free(g_expectDataContent);
491             return SOFTBUS_ERR;
492         }
493     } else if (type == DATA_TYPE_BYTE) {
494         ResetWaitFlag4Byte();
495         ret = SendBytes(g_currentSocket4Data, g_expectDataContent, size);
496         int timeout;
497         if (size < SIZE_1K * SIZE_1K) {
498             timeout = 30;
499         }else if (size >= SIZE_1K * SIZE_1K && size < 2 * SIZE_1K * SIZE_1K)
500         {
501             timeout = 60;
502         }else
503         {
504             timeout = 80;
505         }
506         ret = Wait4Socket(timeout, SOCKET_BYTES);
507         return ret;
508     } else {
509         LOG("[send data]invalid param[DataType]");
510         free(g_expectDataContent);
511         return SOFTBUS_ERR;
512     }
513 
514     LOG("[send data]call SendX success");
515     free(g_expectDataContent);
516     g_expectDataContent = NULL;
517     return ret;
518 }
519 
520 // set/get function
ResetWaitFlag(void)521 void ResetWaitFlag(void)
522 {
523     g_waitFlag = WAIT_DEF_VALUE;
524 }
525 
ResetWaitFlag4Shutdown(void)526 void ResetWaitFlag4Shutdown(void)
527 {
528     g_waitFlag4Shutdown = WAIT_DEF_VALUE;
529 }
530 
ResetWaitFlag4Byte(void)531 void ResetWaitFlag4Byte(void)
532 {
533     g_waitFlag4Byte = WAIT_DEF_VALUE;
534 }
535 
ResetWaitFlag4Message(void)536 void ResetWaitFlag4Message(void)
537 {
538     g_waitFlag4Message = WAIT_DEF_VALUE;
539 }
540 
ResetWaitFlag4Stream(void)541 void ResetWaitFlag4Stream(void)
542 {
543     g_waitFlagStream = WAIT_DEF_VALUE;
544 }
545 
ResetWaitFlag4File(void)546 void ResetWaitFlag4File(void)
547 {
548     g_waitFlag4File = WAIT_DEF_VALUE;
549 }
550 
GetNetworkId(void)551 char* GetNetworkId(void)
552 {
553     return g_networkId;
554 }
555 
556 // To one device only
CheckRemoteDeviceIsNull(int isSetNetId)557 int CheckRemoteDeviceIsNull(int isSetNetId)
558 {
559     int nodeNum = 0;
560     NodeBasicInfo* nodeInfo = NULL;
561     int ret = GetAllNodeDeviceInfo(DEF_PKG_NAME, &nodeInfo, &nodeNum);
562     LOG("[check]get node number is:%d, ret:%d", nodeNum, ret);
563     if (nodeInfo != NULL && nodeNum > 0) {
564         LOG("[check]get netid is:%s", nodeInfo->networkId);
565         if (isSetNetId == BOOL_TRUE) {
566             (void)strncpy_s(g_networkId, NETWORK_ID_BUF_LEN, nodeInfo->networkId, NETWORK_ID_BUF_LEN);
567         }
568         FreeNodeInfo(nodeInfo);
569         return SOFTBUS_OK;
570     } else {
571         LOG("[check]get nodeInfo is null");
572         return SOFTBUS_ERR;
573     }
574 }
575 
GetSocketListnerData(void)576 ISocketListener* GetSocketListnerData(void)
577 {
578     return g_socketlistenerdata;
579 }
580 
SetCurrentSocket4Data(int socket)581 void SetCurrentSocket4Data(int socket)
582 {
583     g_currentSocket4Data = socket;
584 }
585 
GetCurrentSocket4Data(void)586 int GetCurrentSocket4Data(void)
587 {
588     return g_currentSocket4Data;
589 }
590 
TestSetUp(void)591 void TestSetUp(void)
592 {
593     g_defNodeStateCallback.events = EVENT_NODE_STATE_MASK;
594     g_defNodeStateCallback.onNodeOnline = OnDefNodeOnline;
595     g_defNodeStateCallback.onNodeOffline = OnDefNodeOffline;
596     g_defNodeStateCallback.onNodeBasicInfoChanged = OnDefNodeBasicInfoChanged;
597     g_defNodeStateCallback.onNodeStatusChanged = onDefNodeStatusChanged;
598     g_defDiscCallback.OnDeviceFound = OnDefDeviceFound;
599     g_defDiscCallback.OnDiscoverFailed = OnDefDiscoverFail;
600     g_defDiscCallback.OnDiscoverySuccess = OnDefDiscoverSuccess;
601 
602     if (g_socketlistenerdata == NULL) {
603         g_socketlistenerdata = (ISocketListener*)calloc(1, sizeof(ISocketListener));
604         g_socketlistenerdata->OnBind = OnBindData;
605         g_socketlistenerdata->OnShutdown = OnShutdownData;
606         g_socketlistenerdata->OnBytes = OnByteData;
607         g_socketlistenerdata->OnMessage = OnMessageData;
608         g_socketlistenerdata->OnStream = OnStreamData;
609         g_socketlistenerdata->OnFile = OnFileData;
610         g_socketlistenerdata->OnQos = OnQosData;
611     };
612 }
613 
TestTearDown(void)614 void TestTearDown(void)
615 {
616 
617     if (g_socketlistenerdata != NULL) {
618         free(g_socketlistenerdata);
619         g_socketlistenerdata = NULL;
620     }
621 }
622 
AddPermission(void)623 void AddPermission(void)
624 {
625     uint64_t tokenId;
626     const char *perms[2];
627     perms[0] = OHOS_PERMISSION_DISTRIBUTED_SOFTBUS_CENTER;
628     perms[1] = OHOS_PERMISSION_DISTRIBUTED_DATASYNC;
629     NativeTokenInfoParams infoTnstance = {
630         .dcapsNum = 0,
631         .permsNum = 2,
632         .aclsNum = 0,
633         .dcaps = NULL,
634         .perms = perms,
635         .acls = NULL,
636         .processName = "dsoftbus_test_service",
637         .aplStr = "system_core",
638     };
639     tokenId = GetAccessTokenId(&infoTnstance);
640     SetSelfTokenID(tokenId);
641 }