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