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