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