1 /*
2 * Copyright (c) 2021 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 "net_trans_common.h"
17
18 static int ONE_SECOND = 1;
19 static int32_t g_currentSessionId4Data = -1;
20 static int32_t g_currentSessionId4Ctl = -1;
21 static int32_t g_currentSessionId4Proxy = -1;
22 static int32_t g_waitFlag = WAIT_DEF_VALUE;
23 static int32_t g_waitFlag4Data = WAIT_DEF_VALUE;
24 static int32_t g_waitFlag4Ctl = WAIT_DEF_VALUE;
25 static int32_t g_waitFlag4CtlClose = WAIT_DEF_VALUE;
26 static int32_t g_waitFlag4Proxy = WAIT_DEF_VALUE;
27 static int32_t g_waitFlag4Stream = WAIT_DEF_VALUE;
28 static int32_t g_waitFlag4DataClose = WAIT_DEF_VALUE;
29 static int32_t g_passiveOpenRetFlag = SOFTBUS_OK;
30 static int32_t g_nodeOnlineCount = 0;
31 static int32_t g_nodeOfflineCount = 0;
32 static int32_t g_msgCount4Data = 0;
33 static int32_t g_byteCount4Data = 0;
34 static int32_t g_sessionCloseCount4Data = 0;
35 static int32_t g_sessionCloseCount4Ctrl = 0;
36 static int32_t g_sessionOpenCount4Data = 0;
37 static int32_t g_sessionOpenCount4Ctrl = 0;
38 static int32_t g_sessionOpenCount4Proxy = 0;
39
40 static SessionAttribute* g_sessionAttr4Data = NULL;
41 static SessionAttribute* g_sessionAttr4Ctl = NULL;
42 static SessionAttribute* g_sessionAttr4Pass = NULL;
43 static SessionAttribute* g_sessionAttr4Perf = NULL;
44 static SessionAttribute* g_sessionAttr4Proxy = NULL;
45 static SessionAttribute* g_p2pattribute = NULL;
46 static SessionAttribute* g_p2pattributeProxy = NULL;
47 static ISessionListener* g_sessionlistener4Data = NULL;
48 static ISessionListener* g_sessionlistener4Ctl = NULL;
49 static ISessionListener* g_sessionlistener4Pass = NULL;
50 static ISessionListener* g_sessionlistener4Perf = NULL;
51 static ISessionListener* g_sessionlistener4Proxy = NULL;
52 static ISessionListener* g_sessionlistener4Stream = NULL;
53
54 static IFileSendListener* g_fileSendListener = NULL;
55 static IFileReceiveListener* g_fileRecvListener = NULL;
56
57 static char g_networkId[NETWORK_ID_BUF_LEN] = { 0 };
58 static INodeStateCb g_defNodeStateCallback;
59
60 static int* g_sId4Task2;
61 static int* g_sId4Task3;
62 static char g_fillContentChar = 'd';
63 static unsigned int g_expectDataSize = 0;
64 static char* g_expectDataContent = NULL;
65 static char* g_expectMessageContent = NULL;
66 static int32_t g_recvMsgStat4Control[MAX_SESSION_NUM] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
67 static int32_t g_recvByteStat4Control[MAX_SESSION_NUM] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
68 static uint64_t g_transTimeEnd;
69 static pthread_barrier_t* g_barrier = NULL;
70
sleepn(int n)71 void sleepn(int n)
72 {
73 for(int i = 0; i < n; i++) {
74 sleep(1);
75 }
76 }
Wait(int timeout)77 int Wait(int timeout)
78 {
79 LOG("start wait,timeout:%d", timeout);
80 int count = 0;
81 int t = timeout;
82 while (t > 0) {
83 sleep(1);
84 if (g_waitFlag != WAIT_DEF_VALUE) {
85 LOG("Wait success[flag:%d] [time:%d]", g_waitFlag, count);
86 break;
87 }
88 t--;
89 count++;
90 }
91 if (g_waitFlag != WAIT_SUCCESS_VALUE) {
92 LOG("Wait fail[exp:%d, real:%d][used time:%d]", WAIT_SUCCESS_VALUE, g_waitFlag, count);
93 return SOFTBUS_ERR;
94 }
95 return SOFTBUS_OK;
96 }
97
Wait4Session(int timeout, WaitSessionType type)98 int Wait4Session(int timeout, WaitSessionType type)
99 {
100 int hitFlag = -1;
101 int t = timeout;
102 while (t > 0) {
103 sleep(1);
104 switch (type) {
105 case SESSION_4CTL:
106 if (g_waitFlag4Ctl != WAIT_DEF_VALUE) {
107 LOG("Wait4Session[ctrl] succ, flag:%d", g_waitFlag4Ctl);
108 hitFlag = 1;
109 }
110 break;
111 case SESSION_4DATA:
112 if (g_waitFlag4Data != WAIT_DEF_VALUE) {
113 LOG("Wait4Session[data] succ,flag:%d", g_waitFlag4Data);
114 hitFlag = 1;
115 }
116 break;
117 case SESSION_4PROXY:
118 if (g_waitFlag4Proxy != WAIT_DEF_VALUE) {
119 LOG("Wait4Session[proxy] succ,flag:%d", g_waitFlag4Proxy);
120 hitFlag = 1;
121 }
122 break;
123 case SESSION_4STREAM:
124 if (g_waitFlag4Stream != WAIT_DEF_VALUE) {
125 LOG("Wait4Session[proxy] succ,flag:%d", g_waitFlag4Stream);
126 hitFlag = 1;
127 }
128 break;
129 default:
130 LOG("Wait4Session type error");
131 hitFlag = 1;
132 break;
133 }
134 if (hitFlag != -1) {
135 break;
136 }
137 t--;
138 }
139 switch (type) {
140 case SESSION_4CTL:
141 if (g_waitFlag4Ctl != WAIT_SUCCESS_VALUE) {
142 LOG("Wait4Session[ctrl] fail[exp:%d, real:%d]", WAIT_SUCCESS_VALUE, g_waitFlag4Ctl);
143 return SOFTBUS_ERR;
144 }
145 break;
146 case SESSION_4DATA:
147 if (g_waitFlag4Data != WAIT_SUCCESS_VALUE) {
148 LOG("Wait4Session[data] fail[exp:%d, real:%d]", WAIT_SUCCESS_VALUE, g_waitFlag4Data);
149 return SOFTBUS_ERR;
150 }
151 break;
152 case SESSION_4PROXY:
153 if (g_waitFlag4Proxy != WAIT_SUCCESS_VALUE) {
154 LOG("Wait4Session[proxy] fail[exp:%d, real:%d]", WAIT_SUCCESS_VALUE, g_waitFlag4Proxy);
155 return SOFTBUS_ERR;
156 }
157 break;
158 case SESSION_4STREAM:
159 if (g_waitFlag4Stream != WAIT_SUCCESS_VALUE) {
160 LOG("Wait4Session[proxy] fail[exp:%d, real:%d]", WAIT_SUCCESS_VALUE, g_waitFlag4Stream);
161 return SOFTBUS_ERR;
162 }
163 break;
164 default:
165 return SOFTBUS_ERR;
166 }
167 return SOFTBUS_OK;
168 }
169
GetCurrentTimeOfMs(void)170 uint64_t GetCurrentTimeOfMs(void)
171 {
172 int unit = 1000;
173 struct timeval tv;
174 gettimeofday(&tv, NULL);
175 return (tv.tv_sec * unit + tv.tv_usec / unit);
176 }
177
GetSoftbusPid(void)178 char* GetSoftbusPid(void)
179 {
180 FILE* file = NULL;
181 int buffSize = 20;
182 char* buffer = (char*)malloc(buffSize);
183 if (buffer == NULL) {
184 LOG("malloc fail");
185 return NULL;
186 }
187
188 file = popen(CMD_PIDOF_SOFTBUS, "r");
189 if (file == NULL) {
190 LOG("call popen fail");
191 free(buffer);
192 return NULL;
193 }
194 (void)fgets(buffer, buffSize, file);
195 LOG("##################Softbus PID:%s", buffer);
196 pclose(file);
197
198 return buffer;
199 }
200
OnReceiveFileStarted(int sessionId, const char* files, int fileCnt)201 static int OnReceiveFileStarted(int sessionId, const char* files, int fileCnt)
202 {
203 LOG("[recv file]start,sid:%d, fileCnt:%d", sessionId, fileCnt);
204 return 0;
205 }
206
OnReceiveFileProcess(int sessionId, const char* firstFile, uint64_t bytesUpload, uint64_t bytesTotal)207 static int OnReceiveFileProcess(int sessionId, const char* firstFile, uint64_t bytesUpload, uint64_t bytesTotal)
208 {
209 return 0;
210 }
211
OnReceiveFileFinished(int sessionId, const char* files, int fileCnt)212 static void OnReceiveFileFinished(int sessionId, const char* files, int fileCnt)
213 {
214 LOG("[recv file]finish,sid:%d, fileCnt:%d", sessionId, fileCnt);
215 }
216
OnRecvFileTransError(int sessionId)217 static void OnRecvFileTransError(int sessionId)
218 {
219 LOG("[recv file]trans error,sid:%d", sessionId);
220 }
221
OnSendFileProcess(int sessionId, uint64_t bytesUpload, uint64_t bytesTotal)222 static int OnSendFileProcess(int sessionId, uint64_t bytesUpload, uint64_t bytesTotal)
223 {
224 return 0;
225 }
226
OnSendFileFinished(int sessionId, const char* firstFile)227 static int OnSendFileFinished(int sessionId, const char* firstFile)
228 {
229 g_waitFlag = WAIT_SUCCESS_VALUE;
230 LOG("[send file]finish,sid:%d, firstFile:%s\n", sessionId, firstFile);
231 return 0;
232 }
233
OnSendFileTransError(int sessionId)234 static void OnSendFileTransError(int sessionId)
235 {
236 g_waitFlag = WAIT_FAIL_VALUE;
237 LOG("[send file]trans error,sid = %d\n", sessionId);
238 }
239
OnDefNodeOnline(NodeBasicInfo* info)240 static void OnDefNodeOnline(NodeBasicInfo* info)
241 {
242 if (info == NULL) {
243 LOG("[cb]Online: info is null");
244 return;
245 }
246 (void)strncpy_s(g_networkId, NETWORK_ID_BUF_LEN, info->networkId, NETWORK_ID_BUF_LEN);
247 LOG("[cb]Online id:%s, name:%s, type id:%u", info->networkId, info->deviceName, info->deviceTypeId);
248 g_nodeOnlineCount++;
249 }
250
OnDefNodeOffline(NodeBasicInfo* info)251 static void OnDefNodeOffline(NodeBasicInfo* info)
252 {
253 if (info == NULL) {
254 LOG("[cb]Offline: info is null");
255 return;
256 }
257 LOG("[cb]Offline id:%s, name:%s, type id:%u", info->networkId, info->deviceName, info->deviceTypeId);
258 g_nodeOfflineCount++;
259 }
260
OnDefNodeBasicInfoChanged(NodeBasicInfoType type, NodeBasicInfo* info)261 static void OnDefNodeBasicInfoChanged(NodeBasicInfoType type, NodeBasicInfo* info)
262 {
263 if (info == NULL) {
264 LOG("[cb]InfoChanged: info is null, type[%d]", type);
265 return;
266 }
267 LOG("[cb]InfoChanged id: %s,name: %s", info->networkId, info->deviceName);
268 }
269
onDefNodeStatusChanged(NodeStatusType type, NodeStatus *status)270 static void onDefNodeStatusChanged(NodeStatusType type, NodeStatus *status)
271 {
272 if (status == NULL) {
273 LOG("[cb]StatusChanged: info is null, type[%d]", type);
274 return;
275 }
276 LOG("[cb]StatusChanged id: %s,status: %d", status->basicInfo.networkId, status->authStatus);
277 }
278
DataSessionOpened(int sessionId, int result)279 static int DataSessionOpened(int sessionId, int result)
280 {
281 // wait 1s, ensure set current session id
282 sleep(1);
283 g_sessionOpenCount4Data++;
284 if (result == SOFTBUS_OK) {
285 if (sessionId == g_currentSessionId4Data) {
286 LOG("[cb][data]open session check success sid[%d]", sessionId);
287 g_waitFlag4Data = WAIT_SUCCESS_VALUE;
288 } else {
289 LOG("[cb][data]open session callback sid[%d] not match open "
290 "sid[%d]",
291 sessionId, g_currentSessionId4Data);
292 g_waitFlag4Data = WAIT_FAIL_VALUE;
293 }
294 } else {
295 g_waitFlag4Data = WAIT_FAIL_VALUE;
296 }
297 return SOFTBUS_OK;
298 }
299
DataSessionClosed(int sessionId)300 static void DataSessionClosed(int sessionId)
301 {
302 g_sessionCloseCount4Data++;
303 if (sessionId == g_currentSessionId4Data) {
304 LOG("[cb][data]closed session,check sid[%d] success", sessionId);
305 g_currentSessionId4Data = -1;
306 g_waitFlag4DataClose = WAIT_SUCCESS_VALUE;
307 } else {
308 LOG("[cb][data]closed session, callback sid[%d] not match open sid[%d]", sessionId, g_currentSessionId4Data);
309 g_waitFlag4DataClose = WAIT_FAIL_VALUE;
310 }
311 }
312
CheckReceiveData(int sessionId, const void* data, unsigned int dataLen)313 static void CheckReceiveData(int sessionId, const void* data, unsigned int dataLen)
314 {
315 // check session id
316 if (sessionId == g_currentSessionId4Data && dataLen == g_expectDataSize) {
317 LOG("[check]sid/size ok[sid:%d,size:%u]", sessionId, dataLen);
318 } else {
319 LOG("[check]sid/size fail[sid exp:%d,real:%d][size exp:%u,real:%u]", g_currentSessionId4Data, sessionId,
320 g_expectDataSize, dataLen);
321 g_waitFlag = WAIT_FAIL_VALUE;
322 return;
323 }
324
325 // check data content
326 int cmpRst = strncmp(g_expectDataContent, (char*)data, dataLen);
327 if (cmpRst == 0) {
328 LOG("[check] cmp content ok");
329 g_waitFlag = WAIT_SUCCESS_VALUE;
330 } else {
331 LOG("[check] cmp content fail[exp:%s,real:%s]", g_expectDataContent, (char*)data);
332 g_waitFlag = WAIT_FAIL_VALUE;
333 }
334 }
335
DataBytesReceived(int sessionId, const void* data, unsigned int dataLen)336 static void DataBytesReceived(int sessionId, const void* data, unsigned int dataLen)
337 {
338 LOG("[cb][data]ByteRec start");
339 CheckReceiveData(sessionId, data, dataLen);
340 g_byteCount4Data++;
341 LOG("[cb][data]ByteRec end");
342 }
343
DataMessageReceived(int sessionId, const void* data, unsigned int dataLen)344 static void DataMessageReceived(int sessionId, const void* data, unsigned int dataLen)
345 {
346 LOG("[cb][data]MessageRec start");
347 CheckReceiveData(sessionId, data, dataLen);
348 g_msgCount4Data++;
349 LOG("[cb][data]MessageRec end");
350 }
351
ControlSessionOpened(int sessionId, int result)352 static int ControlSessionOpened(int sessionId, int result)
353 {
354 // wait 1s, ensure set current session id
355 sleep(1);
356 g_sessionOpenCount4Ctrl++;
357 if (result == SOFTBUS_OK) {
358 if (sessionId == g_currentSessionId4Ctl) {
359 LOG("[cb][ctrl]open session check success sid[%d]", sessionId);
360 g_waitFlag4Ctl = WAIT_SUCCESS_VALUE;
361 } else {
362 LOG("[cb][ctrl]open session callback sid[%d] not match open "
363 "sid[%d]",
364 sessionId, g_currentSessionId4Ctl);
365 g_waitFlag4Ctl = WAIT_FAIL_VALUE;
366 }
367 } else {
368 g_waitFlag4Ctl = WAIT_FAIL_VALUE;
369 }
370 return SOFTBUS_OK;
371 }
372
ControlSessionClosed(int sessionId)373 static void ControlSessionClosed(int sessionId)
374 {
375 g_sessionCloseCount4Ctrl++;
376 if (sessionId == g_currentSessionId4Ctl) {
377 LOG("[cb][ctrl]closed session check sid[%d] success", sessionId);
378 g_currentSessionId4Ctl = -1;
379 g_waitFlag4CtlClose = WAIT_SUCCESS_VALUE;
380 } else {
381 LOG("[cb][ctrl]closed session callback sid[%d] not match open sid[%d]", sessionId, g_currentSessionId4Ctl);
382 g_waitFlag4CtlClose = WAIT_FAIL_VALUE;
383 }
384 }
385
ControlBytesReceived(int sessionId, const void* data, unsigned int dataLen)386 static void ControlBytesReceived(int sessionId, const void* data, unsigned int dataLen)
387 {
388 LOG("[cb][ctrl]ByteRec sid:%d, data len:%u", sessionId, dataLen);
389 if (sessionId < 0 || sessionId > MAX_SESSION_NUM) {
390 LOG("[cb][ctrl]ByteRec invalid session sid[%d]", sessionId);
391 return;
392 }
393 if (data == NULL) {
394 LOG("[cb][ctrl]ByteRec invalid data=null sid[%d]", sessionId);
395 return;
396 }
397 int sid = sessionId % MAX_SESSION_NUM;
398 g_recvByteStat4Control[sid]++;
399 }
400
ControlMessageReceived(int sessionId, const void* data, unsigned int dataLen)401 static void ControlMessageReceived(int sessionId, const void* data, unsigned int dataLen)
402 {
403 LOG("[cb][ctrl]MessageRec sid:%d, data len:%u", sessionId, dataLen);
404 if (sessionId < 0 || sessionId > MAX_SESSION_NUM) {
405 LOG("[cb][ctrl]MessageRec invalid session sid[%d]", sessionId);
406 return;
407 }
408 if (data == NULL) {
409 LOG("[cb][ctrl]MessageRec invalid data=null sid[%d]", sessionId);
410 return;
411 }
412 int sid = sessionId % MAX_SESSION_NUM;
413 g_recvMsgStat4Control[sid]++;
414 }
415
PassiveSessionOpened(int sessionId, int result)416 static int PassiveSessionOpened(int sessionId, int result)
417 {
418 LOG("[cb][pass]open session passive sid[%d],rst[%d]", sessionId, result);
419 if (result == SOFTBUS_OK) {
420 g_waitFlag = WAIT_SUCCESS_VALUE;
421 } else {
422 g_waitFlag = WAIT_FAIL_VALUE;
423 }
424 if (g_passiveOpenRetFlag == SOFTBUS_ERR) {
425 LOG("[cb][pass]return fail");
426 g_passiveOpenRetFlag = SOFTBUS_OK;
427 return SOFTBUS_ERR;
428 } else {
429 return SOFTBUS_OK;
430 }
431 }
432
PassiveSessionClosed(int sessionId)433 static void PassiveSessionClosed(int sessionId)
434 {
435 LOG("[cb][pass]close session passive sid[%d]", sessionId);
436 g_waitFlag = WAIT_SUCCESS_VALUE;
437 }
438
PassiveBytesReceived(int sessionId, const void* data, unsigned int dataLen)439 static void PassiveBytesReceived(int sessionId, const void* data, unsigned int dataLen)
440 {
441 LOG("[cb][pass]ByteRec sid:%d, data len:%u", sessionId, dataLen);
442 if (data == NULL) {
443 LOG("[cb][pass]ByteRec invalid data=null sid[%d]", sessionId);
444 g_waitFlag = WAIT_FAIL_VALUE;
445 return;
446 }
447 int ret = SendBytes(sessionId, data, dataLen);
448 LOG("[cb][pass]ByteRec send back ret[%d]", ret);
449 if (ret == SOFTBUS_OK) {
450 g_waitFlag = WAIT_SUCCESS_VALUE;
451 } else {
452 g_waitFlag = WAIT_FAIL_VALUE;
453 }
454 }
455
PassiveMessageReceived(int sessionId, const void* data, unsigned int dataLen)456 static void PassiveMessageReceived(int sessionId, const void* data, unsigned int dataLen)
457 {
458 LOG("[cb][pass]MessageRec sid:%d, data len:%u", sessionId, dataLen);
459 if (data == NULL) {
460 LOG("[cb][pass]MessageRec invalid data=null sid[%d]", sessionId);
461 g_waitFlag = WAIT_FAIL_VALUE;
462 return;
463 }
464 int ret = SendMessage(sessionId, data, dataLen);
465 LOG("[cb][pass]MessageRec send back ret[%d]", ret);
466 if (ret == SOFTBUS_OK) {
467 g_waitFlag = WAIT_SUCCESS_VALUE;
468 } else {
469 g_waitFlag = WAIT_FAIL_VALUE;
470 }
471 }
472
PerfSessionOpened(int sessionId, int result)473 static int PerfSessionOpened(int sessionId, int result)
474 {
475 if (result == SOFTBUS_OK) {
476 g_waitFlag = WAIT_SUCCESS_VALUE;
477 } else {
478 LOG("[cb][perf]open session result fail, ret:%d", result);
479 g_waitFlag = WAIT_FAIL_VALUE;
480 }
481 return SOFTBUS_OK;
482 }
483
PerfSessionClosed(int sessionId)484 static void PerfSessionClosed(int sessionId)
485 {
486 LOG("[cb][perf]closed session,sid[%d]", sessionId);
487 }
488
PerfBytesReceived(int sessionId, const void* data, unsigned int dataLen)489 static void PerfBytesReceived(int sessionId, const void* data, unsigned int dataLen)
490 {
491 g_transTimeEnd = GetCurrentTimeOfMs();
492
493 LOG("[cb][perf]Byte recv");
494 g_waitFlag = WAIT_SUCCESS_VALUE;
495 }
496
PerfMessageReceived(int sessionId, const void* data, unsigned int dataLen)497 static void PerfMessageReceived(int sessionId, const void* data, unsigned int dataLen)
498 {
499 LOG("[cb][perf]Message recv");
500 }
501
ProxySessionOpened(int sessionId, int result)502 static int ProxySessionOpened(int sessionId, int result)
503 {
504 LOG("[cb][proxy]open session proxy sid[%d],rst[%d]", sessionId, result);
505 if (result == SOFTBUS_OK) {
506 g_waitFlag4Proxy = WAIT_SUCCESS_VALUE;
507 } else {
508 g_waitFlag4Proxy = WAIT_FAIL_VALUE;
509 }
510 return SOFTBUS_OK;
511 }
512
ProxySessionClosed(int sessionId)513 static void ProxySessionClosed(int sessionId)
514 {
515 LOG("[cb][proxy]close session proxy sid[%d]", sessionId);
516 g_waitFlag4Proxy = WAIT_SUCCESS_VALUE;
517 }
518
ProxyBytesReceived(int sessionId, const void* data, unsigned int dataLen)519 static void ProxyBytesReceived(int sessionId, const void* data, unsigned int dataLen)
520 {
521 LOG("[cb][proxy]ByteRec sid:%d, data len:%u", sessionId, dataLen);
522 if (data == NULL) {
523 LOG("[cb][proxy]ByteRec invalid data=null sid:[%d]", sessionId);
524 g_waitFlag4Proxy = WAIT_FAIL_VALUE;
525 } else {
526 g_waitFlag4Proxy = WAIT_SUCCESS_VALUE;
527 }
528 }
529
ProxyMessageReceived(int sessionId, const void* data, unsigned int dataLen)530 static void ProxyMessageReceived(int sessionId, const void* data, unsigned int dataLen)
531 {
532 LOG("[cb][proxy]MessageRec sid:%d, data len:%u", sessionId, dataLen);
533 if (data == NULL) {
534 LOG("[cb][proxy]MessageRec invalid data=null sid[%d]", sessionId);
535 g_waitFlag4Proxy = WAIT_FAIL_VALUE;
536 } else {
537 g_waitFlag4Proxy = WAIT_SUCCESS_VALUE;
538 }
539 }
540
StreamSessionOpened(int sessionId, int result)541 static int StreamSessionOpened(int sessionId, int result)
542 {
543 LOG("[cb][stream]open session sessionId[%d],rst[%d]", sessionId, result);
544 if (result == SOFTBUS_OK) {
545 g_waitFlag4Stream = WAIT_SUCCESS_VALUE;
546 } else {
547 g_waitFlag4Stream = WAIT_FAIL_VALUE;
548 }
549 return SOFTBUS_OK;
550 }
551
StreamSessionClosed(int sessionId)552 static void StreamSessionClosed(int sessionId)
553 {
554 LOG("[cb][stream]close session sessionId[%d]", sessionId);
555 }
556
557
StreamReceived(int sessionId, const StreamData *data, const StreamData *ext, const StreamFrameInfo *frame)558 static void StreamReceived(int sessionId, const StreamData *data, const StreamData *ext, const StreamFrameInfo *frame)
559 {
560 if (data != NULL) {
561 LOG("[cb][stream]ByteRec sessionId:%d, data= %.*s.\n", sessionId, data->bufLen, data->buf);
562 g_waitFlag4Stream = WAIT_SUCCESS_VALUE;
563 }
564 }
565
ResetWaitFlag(void)566 void ResetWaitFlag(void)
567 {
568 g_waitFlag = WAIT_DEF_VALUE;
569 }
570
ResetWaitFlag4Data(void)571 void ResetWaitFlag4Data(void)
572 {
573 g_waitFlag4Data = WAIT_DEF_VALUE;
574 g_waitFlag4DataClose = WAIT_DEF_VALUE;
575 }
576
ResetWaitFlag4Ctl(void)577 void ResetWaitFlag4Ctl(void)
578 {
579 g_waitFlag4Ctl = WAIT_DEF_VALUE;
580 g_waitFlag4CtlClose = WAIT_DEF_VALUE;
581 }
582
ResetWaitFlag4Proxy(void)583 void ResetWaitFlag4Proxy(void)
584 {
585 g_waitFlag4Proxy = WAIT_DEF_VALUE;
586 }
587
ResetwaitCount4Online(void)588 void ResetwaitCount4Online(void)
589 {
590 g_nodeOnlineCount = 0;
591 }
592
ResetwaitCount4Offline(void)593 void ResetwaitCount4Offline(void)
594 {
595 g_nodeOfflineCount = 0;
596 }
597
RegisterDeviceStateDefCallback(void)598 int RegisterDeviceStateDefCallback(void)
599 {
600 return RegNodeDeviceStateCb(DEF_PKG_NAME, &g_defNodeStateCallback);
601 }
602
UnRegisterDeviceStateDefCallback(void)603 int UnRegisterDeviceStateDefCallback(void)
604 {
605 return UnregNodeDeviceStateCb(&g_defNodeStateCallback);
606 }
607
CreateSsAndOpenSession4Data(void)608 int CreateSsAndOpenSession4Data(void)
609 {
610 int ret;
611 int timeout = 10;
612 ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_DATA, g_sessionlistener4Data);
613 if (ret != SOFTBUS_OK) {
614 LOG("call CreateSessionServer[data] fail, ret:%d", ret);
615 return ret;
616 }
617
618 ResetWaitFlag4Data();
619 int sessionId;
620 sessionId = OpenSession(SESSION_NAME_DATA, SESSION_NAME_DATA, g_networkId, DEF_GROUP_ID, g_sessionAttr4Data);
621 if (sessionId < SESSION_ID_MIN) {
622 LOG("call OpenSession[data] fail, ret sid:%d,netId:%s", sessionId, g_networkId);
623 ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_DATA);
624 if (ret != SOFTBUS_OK) {
625 LOG("RemoveSessionServer[data] fail, ret:%d", ret);
626 }
627 return SOFTBUS_ERR;
628 }
629 SetCurrentSessionId4Data(sessionId);
630 LOG("call OpenSession[data] success,sid:%d", sessionId);
631
632 ret = Wait4Session(timeout, SESSION_4DATA);
633 if (ret != SOFTBUS_OK) {
634 LOG("OpenSession[data] fail");
635 ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_DATA);
636 if (ret != SOFTBUS_OK) {
637 LOG("RemoveSessionServer[data] fail, ret:%d", ret);
638 }
639 return SOFTBUS_ERR;
640 }
641 return ret;
642 }
643
CreateSsAndOpenSession4Ctl(void)644 int CreateSsAndOpenSession4Ctl(void)
645 {
646 int ret;
647 int timeout = 10;
648 ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_CTL, g_sessionlistener4Ctl);
649 if (ret != SOFTBUS_OK) {
650 LOG("call CreateSessionServer[ctl] fail, ret:%d", ret);
651 return ret;
652 }
653
654 int sessionId;
655 ResetWaitFlag4Ctl();
656 sessionId = OpenSession(SESSION_NAME_CTL, SESSION_NAME_CTL, g_networkId, DEF_GROUP_ID, g_sessionAttr4Ctl);
657 if (sessionId < SESSION_ID_MIN) {
658 LOG("call OpenSession[ctl] fail, ret sid:%d", sessionId);
659 ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_CTL);
660 if (ret != SOFTBUS_OK) {
661 LOG("RemoveSessionServer[ctl] fail, ret:%d", ret);
662 }
663 return SOFTBUS_ERR;
664 }
665 SetCurrentSessionId4Ctl(sessionId);
666 LOG("call OpenSession[ctl] success,sid:%d", sessionId);
667
668 ret = Wait4Session(timeout, SESSION_4CTL);
669 if (ret != SOFTBUS_OK) {
670 LOG("OpenSession[ctl] fail");
671 ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_CTL);
672 if (ret != SOFTBUS_OK) {
673 LOG("RemoveSessionServer[ctl] fail, ret:%d", ret);
674 }
675 return SOFTBUS_ERR;
676 }
677 return ret;
678 }
679
CreateSsAndOpenSession4Proxy(void)680 int CreateSsAndOpenSession4Proxy(void)
681 {
682 int ret;
683 int timeout = 10;
684 ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_PROXY, g_sessionlistener4Proxy);
685 if (ret != SOFTBUS_OK) {
686 LOG("call CreateSessionServer[Proxy] fail, ret:%d", ret);
687 return ret;
688 }
689
690 int sessionId;
691 ResetWaitFlag();
692 sessionId = OpenSession(SESSION_NAME_PROXY, SESSION_NAME_PROXY, g_networkId, DEF_GROUP_ID, g_sessionAttr4Proxy);
693 if (sessionId < SESSION_ID_MIN) {
694 LOG("call OpenSession[Proxy] fail, ret sid:%d", sessionId);
695 return SOFTBUS_ERR;
696 }
697 SetCurrentSessionId4Proxy(sessionId);
698 LOG("call OpenSession[Proxy] success,sid:%d", sessionId);
699
700 ret = Wait4Session(timeout, SESSION_4PROXY);
701 if (ret != SOFTBUS_OK) {
702 LOG("OpenSession[Proxy] fail");
703 return SOFTBUS_ERR;
704 }
705 return ret;
706 }
707
SendData4Data(DataType type, int size)708 int SendData4Data(DataType type, int size)
709 {
710 int ret;
711 if (size > 0) {
712 g_expectDataContent = (char*)calloc(1, size);
713 if (g_expectDataContent == NULL) {
714 LOG("[send data]calloc fail");
715 return SOFTBUS_ERR;
716 }
717 (void)memset_s(g_expectDataContent, size, g_fillContentChar, size);
718 } else {
719 LOG("[send data]invalid param[size>=1]");
720 return SOFTBUS_ERR;
721 }
722
723 g_expectDataSize = size;
724 ResetWaitFlag();
725 if (type == DATA_TYPE_MSG) {
726 ret = SendMessage(g_currentSessionId4Data, g_expectDataContent, size);
727 } else if (type == DATA_TYPE_BYTE) {
728 ret = SendBytes(g_currentSessionId4Data, g_expectDataContent, size);
729 } else {
730 LOG("[send data]invalid param[DataType]");
731 free(g_expectDataContent);
732 return SOFTBUS_ERR;
733 }
734 if (ret != SOFTBUS_OK) {
735 LOG("[send data]call SendX fail, ret:%d", ret);
736 free(g_expectDataContent);
737 return SOFTBUS_ERR;
738 }
739 LOG("[send data]call SendX success");
740 int sleeptime = 15;
741 int timeout = 5;
742 if (size > SIZE_1K * SIZE_1K) {
743 timeout = sleeptime;
744 }
745 ret = Wait(timeout);
746 free(g_expectDataContent);
747 g_expectDataContent = NULL;
748 return ret;
749 }
750
SendData4Message(DataType type, int size)751 int SendData4Message(DataType type, int size)
752 {
753 int ret;
754 if (size > 0) {
755 g_expectMessageContent = (char*)calloc(1, size);
756 if (g_expectMessageContent == NULL) {
757 LOG("[send data]calloc fail");
758 return SOFTBUS_ERR;
759 }
760 (void)memset_s(g_expectMessageContent, size, g_fillContentChar, size);
761 } else {
762 LOG("[send data]invalid param[size>=1]");
763 return SOFTBUS_ERR;
764 }
765
766 g_expectDataSize = size;
767 ResetWaitFlag();
768 if (type == DATA_TYPE_MSG) {
769 ret = SendMessage(g_currentSessionId4Proxy, g_expectMessageContent, size);
770 } else if (type == DATA_TYPE_BYTE) {
771 ret = SendBytes(g_currentSessionId4Proxy, g_expectMessageContent, size);
772 } else {
773 LOG("[send data]invalid param[DataType]");
774 free(g_expectMessageContent);
775 return SOFTBUS_ERR;
776 }
777 if (ret != SOFTBUS_OK) {
778 LOG("[send data]call SendX fail, ret:%d", ret);
779 free(g_expectMessageContent);
780 return SOFTBUS_ERR;
781 }
782 free(g_expectMessageContent);
783 g_expectMessageContent = NULL;
784 return ret;
785 }
786
CloseSessionAndRemoveSs4Data(void)787 int CloseSessionAndRemoveSs4Data(void)
788 {
789 int ret4Close;
790 int timeout = 2;
791 // 主动close不回调
792 ResetWaitFlag4Data();
793 CloseSession(g_currentSessionId4Data);
794 ret4Close = Wait4Session(timeout, SESSION_4DATA);
795 if (ret4Close == SOFTBUS_OK) {
796 LOG("CloseSession[data] recv callback");
797 }
798
799 int ret4Ss;
800 ret4Ss = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_DATA);
801 if (ret4Ss != SOFTBUS_OK) {
802 LOG("RemoveSessionServer[data] fail, ret:%d", ret4Ss);
803 }
804
805 if (ret4Ss != SOFTBUS_OK || ret4Close == SOFTBUS_OK) {
806 return SOFTBUS_ERR;
807 } else {
808 return SOFTBUS_OK;
809 }
810 }
811
CloseSessionAndRemoveSs4Ctl(void)812 int CloseSessionAndRemoveSs4Ctl(void)
813 {
814 int ret4Close;
815 int timeout = 2;
816 ResetWaitFlag4Ctl();
817 CloseSession(g_currentSessionId4Ctl);
818 ret4Close = Wait4Session(timeout, SESSION_4CTL);
819 if (ret4Close == SOFTBUS_OK) {
820 LOG("CloseSession[ctrl] recv callback");
821 }
822
823 int ret4Ss;
824 ret4Ss = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_CTL);
825 if (ret4Ss != SOFTBUS_OK) {
826 LOG("RemoveSessionServer[ctl] fail, ret:%d", ret4Ss);
827 }
828
829 if (ret4Ss != SOFTBUS_OK || ret4Close == SOFTBUS_OK) {
830 return SOFTBUS_ERR;
831 } else {
832 return SOFTBUS_OK;
833 }
834 }
835
CloseSessionAndRemoveSs4Proxy(void)836 int CloseSessionAndRemoveSs4Proxy(void)
837 {
838 int ret4Close;
839 int timeout = 2;
840 ResetWaitFlag();
841 CloseSession(g_currentSessionId4Proxy);
842 ret4Close = Wait(timeout);
843 if (ret4Close == SOFTBUS_OK) {
844 LOG("CloseSession[Proxy] recv callback");
845 }
846
847 int ret4Ss;
848 ret4Ss = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_PROXY);
849 if (ret4Ss != SOFTBUS_OK) {
850 LOG("RemoveSessionServer[Proxy] fail, ret:%d", ret4Ss);
851 }
852
853 if (ret4Ss != SOFTBUS_OK || ret4Close == SOFTBUS_OK) {
854 return SOFTBUS_ERR;
855 } else {
856 return SOFTBUS_OK;
857 }
858 }
859
OpenSession4DataByP2p(void)860 int OpenSession4DataByP2p(void)
861 {
862 int ret;
863 int timeout = 10;
864 ResetWaitFlag4Data();
865 int sId = OpenSession(SESSION_NAME_DATA, SESSION_NAME_DATA, g_networkId, DEF_GROUP_ID, g_p2pattribute);
866 if (sId < SESSION_ID_MIN) {
867 LOG("openSession[data] fail,id:%d, netId:%s", sId, g_networkId);
868 return SOFTBUS_ERR;
869 }
870 SetCurrentSessionId4Data(sId);
871 ret = Wait4Session(timeout, SESSION_4DATA);
872 if (ret != SOFTBUS_OK) {
873 LOG("Wait4Session[data] fail");
874 return SOFTBUS_ERR;
875 }
876 return ret;
877 }
878
OpenSession4ProxyByP2p(void)879 int OpenSession4ProxyByP2p(void)
880 {
881 int ret;
882 int timeout = 10;
883 ResetWaitFlag4Proxy();
884 int sId = OpenSession(SESSION_NAME_PROXY, SESSION_NAME_PROXY, g_networkId, DEF_GROUP_ID, g_p2pattributeProxy);
885 if (sId < SESSION_ID_MIN) {
886 LOG("openSession[data] fail,id:%d, netId:%s", sId, g_networkId);
887 return SOFTBUS_ERR;
888 }
889 SetCurrentSessionId4Proxy(sId);
890 ret = Wait4Session(timeout, SESSION_4PROXY);
891 if (ret != SOFTBUS_OK) {
892 LOG("Wait4Session[data] fail");
893 return SOFTBUS_ERR;
894 }
895
896 return ret;
897 }
898
OpenSessionBatch4Data(char groupId[][GROUP_ID_LEN], int* sessionId, int count)899 int OpenSessionBatch4Data(char groupId[][GROUP_ID_LEN], int* sessionId, int count)
900 {
901 int ret;
902 int timeout = 10;
903 int rstFlag = SOFTBUS_OK;
904 for (int i = 0; i < count; i++) {
905 ResetWaitFlag4Data();
906 int sId = OpenSession(SESSION_NAME_DATA, SESSION_NAME_DATA, g_networkId, groupId[i], g_sessionAttr4Data);
907 if (sId < SESSION_ID_MIN) {
908 LOG("call OpenSession[data] fail,sid:%d,i:%d", sId, i);
909 rstFlag = SOFTBUS_ERR;
910 continue;
911 }
912 SetCurrentSessionId4Data(sId);
913 *(sessionId + i) = sId;
914 ret = Wait4Session(timeout, SESSION_4DATA);
915 if (ret != SOFTBUS_OK) {
916 LOG("Wait4Session[data] fail,i:%d", i);
917 rstFlag = SOFTBUS_ERR;
918 }
919 }
920 return rstFlag;
921 }
922
OpenSessionBatch4Ctl(char groupId[][GROUP_ID_LEN], int* sessionId, int count)923 int OpenSessionBatch4Ctl(char groupId[][GROUP_ID_LEN], int* sessionId, int count)
924 {
925 int ret;
926 int timeout = 10;
927 int rstFlag = SOFTBUS_OK;
928 for (int i = 0; i < count; i++) {
929 ResetWaitFlag4Ctl();
930 int sId = OpenSession(SESSION_NAME_CTL, SESSION_NAME_CTL, g_networkId, groupId[i], g_sessionAttr4Ctl);
931 if (sId < SESSION_ID_MIN) {
932 LOG("call OpenSession[ctrl] fail,sid:%d,i:%d", sId, i);
933 rstFlag = SOFTBUS_ERR;
934 continue;
935 }
936 SetCurrentSessionId4Ctl(sId);
937 *(sessionId + i) = sId;
938 ret = Wait4Session(timeout, SESSION_4CTL);
939 if (ret != SOFTBUS_OK) {
940 LOG("Wait4Session[ctrl] fail,i:%d", i);
941 rstFlag = SOFTBUS_ERR;
942 }
943 }
944 return rstFlag;
945 }
946
CloseSessionBatch4Data(int* sessionId, int count)947 int CloseSessionBatch4Data(int* sessionId, int count)
948 {
949 for (int i = 0; i < count; i++) {
950 int sid = *(sessionId + i);
951 LOG("close session[data] sid:%d", sid);
952
953 SetCurrentSessionId4Data(sid);
954 CloseSession(sid);
955 }
956 return SOFTBUS_OK;
957 }
958
CloseSessionBatch4Ctl(int* sessionId, int count)959 int CloseSessionBatch4Ctl(int* sessionId, int count)
960 {
961 for (int i = 0; i < count; i++) {
962 int sid = *(sessionId + i);
963 LOG("close session[ctrl] sid:%d", sid);
964
965 SetCurrentSessionId4Ctl(sid);
966 CloseSession(sid);
967 }
968 return SOFTBUS_OK;
969 }
970
WaitNodeCount(int timeout, WaitNodeStateType state, int expectCount)971 int WaitNodeCount(int timeout, WaitNodeStateType state, int expectCount)
972 {
973 LOG("Wait4Node,timeout:%d, type:%d, exp count:%d", timeout, state, expectCount);
974 int hitFlag = -1;
975 while (timeout > 0) {
976 sleep(ONE_SECOND);
977 switch (state) {
978 case STATE_ONLINE:
979 if (g_nodeOnlineCount == expectCount) {
980 LOG("Wait4Node[online] succ,timeout:%d", timeout);
981 hitFlag = 1;
982 }
983 break;
984 case STATE_OFFLINE:
985 if (g_nodeOfflineCount == expectCount) {
986 LOG("Wait4Node[offline] succ,timeout:%d", timeout);
987 hitFlag = 1;
988 }
989 break;
990 default:
991 LOG("Wait4Node state error");
992 hitFlag = 1;
993 break;
994 }
995 if (hitFlag != -1) {
996 break;
997 }
998 timeout--;
999 }
1000 switch (state) {
1001 case STATE_ONLINE:
1002 if (g_nodeOnlineCount != expectCount) {
1003 LOG("Wait4Node[online] fail[exp:%d, real:%d]", expectCount, g_nodeOnlineCount);
1004 return SOFTBUS_ERR;
1005 }
1006 break;
1007 case STATE_OFFLINE:
1008 if (g_nodeOfflineCount != expectCount) {
1009 LOG("Wait4Node[offline] fail[exp:%d, real:%d]", expectCount, g_nodeOfflineCount);
1010 return SOFTBUS_ERR;
1011 }
1012 break;
1013 default:
1014 return SOFTBUS_ERR;
1015 }
1016 return SOFTBUS_OK;
1017 }
1018
1019 // set/get function
ResetClosedSessionCount4Data(void)1020 void ResetClosedSessionCount4Data(void)
1021 {
1022 g_sessionCloseCount4Data = 0;
1023 }
1024
ResetClosedSessionCount4Ctrl(void)1025 void ResetClosedSessionCount4Ctrl(void)
1026 {
1027 g_sessionCloseCount4Ctrl = 0;
1028 }
1029
GetClosedSessionCount4Data(void)1030 int GetClosedSessionCount4Data(void)
1031 {
1032 return g_sessionCloseCount4Data;
1033 }
1034
GetClosedSessionCount4Ctrl(void)1035 int GetClosedSessionCount4Ctrl(void)
1036 {
1037 return g_sessionCloseCount4Ctrl;
1038 }
1039
GetNetworkId(void)1040 char* GetNetworkId(void)
1041 {
1042 return g_networkId;
1043 }
1044
1045 // To one device only
CheckRemoteDeviceIsNull(int isSetNetId)1046 int CheckRemoteDeviceIsNull(int isSetNetId)
1047 {
1048 int nodeNum = 0;
1049 NodeBasicInfo* nodeInfo = NULL;
1050 int ret = GetAllNodeDeviceInfo(DEF_PKG_NAME, &nodeInfo, &nodeNum);
1051 LOG("[check]get node number is:%d, ret:%d", nodeNum, ret);
1052 if (nodeInfo != NULL && nodeNum > 0) {
1053 LOG("[check]get netid is:%s", nodeInfo->networkId);
1054 if (isSetNetId == BOOL_TRUE) {
1055 (void)strncpy_s(g_networkId, NETWORK_ID_BUF_LEN, nodeInfo->networkId, NETWORK_ID_BUF_LEN);
1056 }
1057 FreeNodeInfo(nodeInfo);
1058 return SOFTBUS_OK;
1059 } else {
1060 LOG("[check]get nodeInfo is null");
1061 return SOFTBUS_ERR;
1062 }
1063 }
1064
GetSessionListenser4Data(void)1065 ISessionListener* GetSessionListenser4Data(void)
1066 {
1067 return g_sessionlistener4Data;
1068 }
1069
GetSessionListenser4Ctl(void)1070 ISessionListener* GetSessionListenser4Ctl(void)
1071 {
1072 return g_sessionlistener4Ctl;
1073 }
1074
GetSessionListenser4Proxy(void)1075 ISessionListener* GetSessionListenser4Proxy(void)
1076 {
1077 return g_sessionlistener4Proxy;
1078 }
1079
GetSessionListenser4Stream(void)1080 ISessionListener* GetSessionListenser4Stream(void)
1081 {
1082 return g_sessionlistener4Stream;
1083 }
1084
GetSendFileListener(void)1085 IFileSendListener* GetSendFileListener(void)
1086 {
1087 return g_fileSendListener;
1088 }
1089
GetRecvFileListener(void)1090 IFileReceiveListener* GetRecvFileListener(void)
1091 {
1092 return g_fileRecvListener;
1093 }
1094
GetSessionAttr4Data(void)1095 SessionAttribute* GetSessionAttr4Data(void)
1096 {
1097 return g_sessionAttr4Data;
1098 }
1099
GetSessionAttr4DataP2p(void)1100 SessionAttribute* GetSessionAttr4DataP2p(void)
1101 {
1102 return g_p2pattribute;
1103 }
1104
GetSessionAttr4ProxyP2p(void)1105 SessionAttribute* GetSessionAttr4ProxyP2p(void)
1106 {
1107 return g_p2pattributeProxy;
1108 }
GetSessionAttr4Ctl(void)1109 SessionAttribute* GetSessionAttr4Ctl(void)
1110 {
1111 return g_sessionAttr4Ctl;
1112 }
1113
GetSessionAttr4Proxy(void)1114 SessionAttribute* GetSessionAttr4Proxy(void)
1115 {
1116 return g_sessionAttr4Proxy;
1117 }
1118
SetCurrentSessionId4Data(int sessionId)1119 void SetCurrentSessionId4Data(int sessionId)
1120 {
1121 g_currentSessionId4Data = sessionId;
1122 }
1123
SetCurrentSessionId4Ctl(int sessionId)1124 void SetCurrentSessionId4Ctl(int sessionId)
1125 {
1126 g_currentSessionId4Ctl = sessionId;
1127 }
1128
SetCurrentSessionId4Proxy(int sessionId)1129 void SetCurrentSessionId4Proxy(int sessionId)
1130 {
1131 g_currentSessionId4Proxy = sessionId;
1132 }
1133
GetCurrentSessionId4Data(void)1134 int GetCurrentSessionId4Data(void)
1135 {
1136 return g_currentSessionId4Data;
1137 }
1138
GetCurrentSessionId4Ctl(void)1139 int GetCurrentSessionId4Ctl(void)
1140 {
1141 return g_currentSessionId4Ctl;
1142 }
1143
GetCurrentSessionId4Proxy(void)1144 int GetCurrentSessionId4Proxy(void)
1145 {
1146 return g_currentSessionId4Proxy;
1147 }
1148
GetOpenSessionCount4Proxy(void)1149 int GetOpenSessionCount4Proxy(void)
1150 {
1151 return g_sessionOpenCount4Proxy;
1152 }
1153
TestSetUp(void)1154 void TestSetUp(void)
1155 {
1156 g_defNodeStateCallback.events = EVENT_NODE_STATE_MASK;
1157 g_defNodeStateCallback.onNodeOnline = OnDefNodeOnline;
1158 g_defNodeStateCallback.onNodeOffline = OnDefNodeOffline;
1159 g_defNodeStateCallback.onNodeBasicInfoChanged = OnDefNodeBasicInfoChanged;
1160 g_defNodeStateCallback.onNodeStatusChanged = onDefNodeStatusChanged;
1161 if (g_sessionlistener4Data == NULL) {
1162 g_sessionlistener4Data = (ISessionListener*)calloc(1, sizeof(ISessionListener));
1163 g_sessionlistener4Data->OnSessionOpened = DataSessionOpened;
1164 g_sessionlistener4Data->OnSessionClosed = DataSessionClosed;
1165 g_sessionlistener4Data->OnMessageReceived = DataMessageReceived;
1166 g_sessionlistener4Data->OnBytesReceived = DataBytesReceived;
1167 }
1168 if (g_sessionlistener4Ctl == NULL) {
1169 g_sessionlistener4Ctl = (ISessionListener*)calloc(1, sizeof(ISessionListener));
1170 g_sessionlistener4Ctl->OnSessionOpened = ControlSessionOpened;
1171 g_sessionlistener4Ctl->OnSessionClosed = ControlSessionClosed;
1172 g_sessionlistener4Ctl->OnMessageReceived = ControlMessageReceived;
1173 g_sessionlistener4Ctl->OnBytesReceived = ControlBytesReceived;
1174 }
1175 if (g_sessionlistener4Pass == NULL) {
1176 g_sessionlistener4Pass = (ISessionListener*)calloc(1, sizeof(ISessionListener));
1177 g_sessionlistener4Pass->OnSessionOpened = PassiveSessionOpened;
1178 g_sessionlistener4Pass->OnSessionClosed = PassiveSessionClosed;
1179 g_sessionlistener4Pass->OnMessageReceived = PassiveMessageReceived;
1180 g_sessionlistener4Pass->OnBytesReceived = PassiveBytesReceived;
1181 }
1182 if (g_sessionlistener4Perf == NULL) {
1183 g_sessionlistener4Perf = (ISessionListener*)calloc(1, sizeof(ISessionListener));
1184 g_sessionlistener4Perf->OnSessionOpened = PerfSessionOpened;
1185 g_sessionlistener4Perf->OnSessionClosed = PerfSessionClosed;
1186 g_sessionlistener4Perf->OnMessageReceived = PerfMessageReceived;
1187 g_sessionlistener4Perf->OnBytesReceived = PerfBytesReceived;
1188 }
1189 if (g_sessionlistener4Proxy == NULL) {
1190 g_sessionlistener4Proxy = (ISessionListener*)calloc(1, sizeof(ISessionListener));
1191 g_sessionlistener4Proxy->OnSessionOpened = ProxySessionOpened;
1192 g_sessionlistener4Proxy->OnSessionClosed = ProxySessionClosed;
1193 g_sessionlistener4Proxy->OnMessageReceived = ProxyMessageReceived;
1194 g_sessionlistener4Proxy->OnBytesReceived = ProxyBytesReceived;
1195 }
1196 if (g_sessionlistener4Stream == NULL) {
1197 g_sessionlistener4Stream = (ISessionListener*)calloc(1, sizeof(ISessionListener));
1198 g_sessionlistener4Stream->OnSessionOpened = StreamSessionOpened;
1199 g_sessionlistener4Stream->OnSessionClosed = StreamSessionClosed;
1200 g_sessionlistener4Stream->OnStreamReceived = StreamReceived;
1201 }
1202 if (g_fileSendListener == NULL) {
1203 g_fileSendListener = (IFileSendListener*)calloc(1, sizeof(IFileSendListener));
1204 g_fileSendListener->OnSendFileProcess = OnSendFileProcess;
1205 g_fileSendListener->OnSendFileFinished = OnSendFileFinished;
1206 g_fileSendListener->OnFileTransError = OnSendFileTransError;
1207 };
1208 if (g_fileRecvListener == NULL) {
1209 g_fileRecvListener = (IFileReceiveListener*)calloc(1, sizeof(IFileReceiveListener));
1210 g_fileRecvListener->OnReceiveFileStarted = OnReceiveFileStarted;
1211 g_fileRecvListener->OnReceiveFileProcess = OnReceiveFileProcess;
1212 g_fileRecvListener->OnReceiveFileFinished = OnReceiveFileFinished;
1213 g_fileRecvListener->OnFileTransError = OnRecvFileTransError;
1214 }
1215 if (g_sessionAttr4Data == NULL) {
1216 g_sessionAttr4Data = (SessionAttribute*)calloc(1, sizeof(SessionAttribute));
1217 g_sessionAttr4Data->dataType = TYPE_BYTES;
1218 }
1219 if (g_sessionAttr4Ctl == NULL) {
1220 g_sessionAttr4Ctl = (SessionAttribute*)calloc(1, sizeof(SessionAttribute));
1221 g_sessionAttr4Ctl->dataType = TYPE_BYTES;
1222 }
1223 if (g_sessionAttr4Pass == NULL) {
1224 g_sessionAttr4Pass = (SessionAttribute*)calloc(1, sizeof(SessionAttribute));
1225 g_sessionAttr4Pass->dataType = TYPE_BYTES;
1226 }
1227 if (g_sessionAttr4Perf == NULL) {
1228 g_sessionAttr4Perf = (SessionAttribute*)calloc(1, sizeof(SessionAttribute));
1229 g_sessionAttr4Perf->dataType = TYPE_BYTES;
1230 }
1231 if (g_sessionAttr4Proxy == NULL) {
1232 g_sessionAttr4Proxy = (SessionAttribute*)calloc(1, sizeof(SessionAttribute));
1233 g_sessionAttr4Proxy->dataType = TYPE_MESSAGE;
1234 }
1235 if (g_p2pattribute == NULL) {
1236 g_p2pattribute = (SessionAttribute*)calloc(1, sizeof(SessionAttribute));
1237 g_p2pattribute->dataType = TYPE_BYTES;
1238 g_p2pattribute->linkTypeNum = 1;
1239 g_p2pattribute->linkType[0] = LINK_TYPE_WIFI_P2P;
1240 }
1241 if (g_p2pattributeProxy == NULL) {
1242 g_p2pattributeProxy = (SessionAttribute*)calloc(1, sizeof(SessionAttribute));
1243 g_p2pattributeProxy->dataType = TYPE_MESSAGE;
1244 g_p2pattributeProxy->linkTypeNum = 1;
1245 g_p2pattributeProxy->linkType[0] = LINK_TYPE_WIFI_P2P;
1246 }
1247 if (g_barrier == NULL) {
1248 g_barrier = (pthread_barrier_t*)calloc(1, sizeof(pthread_barrier_t));
1249 }
1250 if (g_sId4Task2 == NULL) {
1251 g_sId4Task2 = (int*)malloc(sizeof(int) * DEF_SEND_DATA_SID_COUNT);
1252 }
1253 if (g_sId4Task3 == NULL) {
1254 g_sId4Task3 = (int*)malloc(sizeof(int) * DEF_SEND_DATA_SID_COUNT);
1255 }
1256 }
1257
TestTearDown(void)1258 void TestTearDown(void)
1259 {
1260 if (g_sessionlistener4Data != NULL) {
1261 free(g_sessionlistener4Data);
1262 g_sessionlistener4Data = NULL;
1263 }
1264 if (g_sessionlistener4Ctl != NULL) {
1265 free(g_sessionlistener4Ctl);
1266 g_sessionlistener4Ctl = NULL;
1267 }
1268 if (g_sessionlistener4Pass != NULL) {
1269 free(g_sessionlistener4Pass);
1270 g_sessionlistener4Pass = NULL;
1271 }
1272 if (g_sessionlistener4Perf != NULL) {
1273 free(g_sessionlistener4Perf);
1274 g_sessionlistener4Perf = NULL;
1275 }
1276 if (g_sessionlistener4Proxy != NULL) {
1277 free(g_sessionlistener4Proxy);
1278 g_sessionlistener4Proxy = NULL;
1279 }
1280 if (g_sessionlistener4Stream != NULL) {
1281 free(g_sessionlistener4Stream);
1282 g_sessionlistener4Stream = NULL;
1283 }
1284 if (g_fileRecvListener != NULL) {
1285 free(g_fileRecvListener);
1286 g_fileRecvListener = NULL;
1287 }
1288 if (g_fileSendListener != NULL) {
1289 free(g_fileSendListener);
1290 g_fileSendListener = NULL;
1291 }
1292 if (g_sessionAttr4Data != NULL) {
1293 free(g_sessionAttr4Data);
1294 g_sessionAttr4Data = NULL;
1295 }
1296 if (g_sessionAttr4Ctl != NULL) {
1297 free(g_sessionAttr4Ctl);
1298 g_sessionAttr4Ctl = NULL;
1299 }
1300 if (g_sessionAttr4Pass != NULL) {
1301 free(g_sessionAttr4Pass);
1302 g_sessionAttr4Pass = NULL;
1303 }
1304 if (g_sessionAttr4Perf != NULL) {
1305 free(g_sessionAttr4Perf);
1306 g_sessionAttr4Perf = NULL;
1307 }
1308 if (g_sessionAttr4Proxy != NULL) {
1309 free(g_sessionAttr4Proxy);
1310 g_sessionAttr4Proxy = NULL;
1311 }
1312 if (g_p2pattribute != NULL) {
1313 free(g_p2pattribute);
1314 g_p2pattribute = NULL;
1315 }
1316 if (g_p2pattributeProxy != NULL) {
1317 free(g_p2pattributeProxy);
1318 g_p2pattributeProxy = NULL;
1319 }
1320 if (g_barrier != NULL) {
1321 free(g_barrier);
1322 g_barrier = NULL;
1323 }
1324 if (g_sId4Task2 != NULL) {
1325 free(g_sId4Task2);
1326 g_sId4Task2 = NULL;
1327 }
1328 if (g_sId4Task3 != NULL) {
1329 free(g_sId4Task3);
1330 g_sId4Task3 = NULL;
1331 }
1332 }
1333
AddPermission(void)1334 void AddPermission(void)
1335 {
1336 uint64_t tokenId;
1337 const char *perms[2];
1338 perms[0] = OHOS_PERMISSION_DISTRIBUTED_SOFTBUS_CENTER;
1339 perms[1] = OHOS_PERMISSION_DISTRIBUTED_DATASYNC;
1340 NativeTokenInfoParams infoTnstance = {
1341 .dcapsNum = 0,
1342 .permsNum = 2,
1343 .aclsNum = 0,
1344 .dcaps = NULL,
1345 .perms = perms,
1346 .acls = NULL,
1347 .processName = "dsoftbus_test_service",
1348 .aplStr = "system_core",
1349 };
1350 tokenId = GetAccessTokenId(&infoTnstance);
1351 SetSelfTokenID(tokenId);
1352 }