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 }