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
DataSessionOpened(int sessionId,int result)321 static int DataSessionOpened(int sessionId, int result)
322 {
323 // wait 1s, ensure set current session id
324 sleep(1);
325 g_sessionOpenCount4Data++;
326 if (result == SOFTBUS_OK) {
327 if (sessionId == g_currentSessionId4Data) {
328 LOG("[cb][data]open session check success sid[%d]", sessionId);
329 g_waitFlag4Data = WAIT_SUCCESS_VALUE;
330 } else {
331 LOG("[cb][data]open session callback sid[%d] not match open "
332 "sid[%d]",
333 sessionId, g_currentSessionId4Data);
334 g_waitFlag4Data = WAIT_FAIL_VALUE;
335 }
336 } else {
337 g_waitFlag4Data = WAIT_FAIL_VALUE;
338 }
339 return SOFTBUS_OK;
340 }
341
DataSessionClosed(int sessionId)342 static void DataSessionClosed(int sessionId)
343 {
344 g_sessionCloseCount4Data++;
345 if (sessionId == g_currentSessionId4Data) {
346 LOG("[cb][data]closed session,check sid[%d] success", sessionId);
347 g_currentSessionId4Data = -1;
348 g_waitFlag4Data = WAIT_SUCCESS_VALUE;
349 } else {
350 LOG("[cb][data]closed session, callback sid[%d] not match open sid[%d]", sessionId, g_currentSessionId4Data);
351 g_waitFlag4Data = WAIT_FAIL_VALUE;
352 }
353 }
354
CheckReceiveData(int sessionId,const void * data,unsigned int dataLen)355 static void CheckReceiveData(int sessionId, const void* data, unsigned int dataLen)
356 {
357 // check session id
358 if (sessionId == g_currentSessionId4Data && dataLen == g_expectDataSize) {
359 LOG("[check]sid/size ok[sid:%d,size:%u]", sessionId, dataLen);
360 } else {
361 LOG("[check]sid/size fail[sid exp:%d,real:%d][size exp:%u,real:%u]", g_currentSessionId4Data, sessionId,
362 g_expectDataSize, dataLen);
363 g_waitFlag = WAIT_FAIL_VALUE;
364 return;
365 }
366
367 // check data content
368 int cmpRst = strncmp(g_expectDataContent, (char*)data, dataLen);
369 if (cmpRst == 0) {
370 LOG("[check] cmp content ok");
371 g_waitFlag = WAIT_SUCCESS_VALUE;
372 } else {
373 LOG("[check] cmp content fail[exp:%s,real:%s]", g_expectDataContent, (char*)data);
374 g_waitFlag = WAIT_FAIL_VALUE;
375 }
376 }
377
DataBytesReceived(int sessionId,const void * data,unsigned int dataLen)378 static void DataBytesReceived(int sessionId, const void* data, unsigned int dataLen)
379 {
380 LOG("[cb][data]ByteRec start");
381 CheckReceiveData(sessionId, data, dataLen);
382 g_byteCount4Data++;
383 LOG("[cb][data]ByteRec end");
384 }
385
DataMessageReceived(int sessionId,const void * data,unsigned int dataLen)386 static void DataMessageReceived(int sessionId, const void* data, unsigned int dataLen)
387 {
388 LOG("[cb][data]MessageRec start");
389 CheckReceiveData(sessionId, data, dataLen);
390 g_msgCount4Data++;
391 LOG("[cb][data]MessageRec end");
392 }
393
ControlSessionOpened(int sessionId,int result)394 static int ControlSessionOpened(int sessionId, int result)
395 {
396 // wait 1s, ensure set current session id
397 sleep(1);
398 g_sessionOpenCount4Ctrl++;
399 if (result == SOFTBUS_OK) {
400 if (sessionId == g_currentSessionId4Ctl) {
401 LOG("[cb][ctrl]open session check success sid[%d]", sessionId);
402 g_waitFlag4Ctl = WAIT_SUCCESS_VALUE;
403 } else {
404 LOG("[cb][ctrl]open session callback sid[%d] not match open "
405 "sid[%d]",
406 sessionId, g_currentSessionId4Ctl);
407 g_waitFlag4Ctl = WAIT_FAIL_VALUE;
408 }
409 } else {
410 g_waitFlag4Ctl = WAIT_FAIL_VALUE;
411 }
412 return SOFTBUS_OK;
413 }
414
ControlSessionClosed(int sessionId)415 static void ControlSessionClosed(int sessionId)
416 {
417 g_sessionCloseCount4Ctrl++;
418 if (sessionId == g_currentSessionId4Ctl) {
419 LOG("[cb][ctrl]closed session check sid[%d] success", sessionId);
420 g_currentSessionId4Ctl = -1;
421 g_waitFlag4Ctl = WAIT_SUCCESS_VALUE;
422 } else {
423 LOG("[cb][ctrl]closed session callback sid[%d] not match open sid[%d]", sessionId, g_currentSessionId4Ctl);
424 g_waitFlag4Ctl = WAIT_FAIL_VALUE;
425 }
426 }
427
ControlBytesReceived(int sessionId,const void * data,unsigned int dataLen)428 static void ControlBytesReceived(int sessionId, const void* data, unsigned int dataLen)
429 {
430 LOG("[cb][ctrl]ByteRec sid:%d, data len:%u", sessionId, dataLen);
431 if (sessionId < 0 || sessionId > MAX_SESSION_NUM) {
432 LOG("[cb][ctrl]ByteRec invalid session sid[%d]", sessionId);
433 return;
434 }
435 if (data == NULL) {
436 LOG("[cb][ctrl]ByteRec invalid data=null sid[%d]", sessionId);
437 return;
438 }
439 g_recvByteStat4Control[sessionId]++;
440 }
441
ControlMessageReceived(int sessionId,const void * data,unsigned int dataLen)442 static void ControlMessageReceived(int sessionId, const void* data, unsigned int dataLen)
443 {
444 LOG("[cb][ctrl]MessageRec sid:%d, data len:%u", sessionId, dataLen);
445 if (sessionId < 0 || sessionId > MAX_SESSION_NUM) {
446 LOG("[cb][ctrl]MessageRec invalid session sid[%d]", sessionId);
447 return;
448 }
449 if (data == NULL) {
450 LOG("[cb][ctrl]MessageRec invalid data=null sid[%d]", sessionId);
451 return;
452 }
453 g_recvMsgStat4Control[sessionId]++;
454 }
455
PassiveSessionOpened(int sessionId,int result)456 static int PassiveSessionOpened(int sessionId, int result)
457 {
458 LOG("[cb][pass]open session passive sid[%d],rst[%d]", sessionId, result);
459 if (result == SOFTBUS_OK) {
460 g_waitFlag = WAIT_SUCCESS_VALUE;
461 } else {
462 g_waitFlag = WAIT_FAIL_VALUE;
463 }
464 if (g_passiveOpenRetFlag == SOFTBUS_ERR) {
465 LOG("[cb][pass]return fail");
466 g_passiveOpenRetFlag = SOFTBUS_OK;
467 return SOFTBUS_ERR;
468 } else {
469 return SOFTBUS_OK;
470 }
471 }
472
PassiveSessionClosed(int sessionId)473 static void PassiveSessionClosed(int sessionId)
474 {
475 LOG("[cb][pass]close session passive sid[%d]", sessionId);
476 g_waitFlag = WAIT_SUCCESS_VALUE;
477 }
478
PassiveBytesReceived(int sessionId,const void * data,unsigned int dataLen)479 static void PassiveBytesReceived(int sessionId, const void* data, unsigned int dataLen)
480 {
481 LOG("[cb][pass]ByteRec sid:%d, data len:%u", sessionId, dataLen);
482 if (data == NULL) {
483 LOG("[cb][pass]ByteRec invalid data=null sid[%d]", sessionId);
484 g_waitFlag = WAIT_FAIL_VALUE;
485 return;
486 }
487 int ret = SendBytes(sessionId, data, dataLen);
488 LOG("[cb][pass]ByteRec send back ret[%d]", ret);
489 if (ret == SOFTBUS_OK) {
490 g_waitFlag = WAIT_SUCCESS_VALUE;
491 } else {
492 g_waitFlag = WAIT_FAIL_VALUE;
493 }
494 }
495
PassiveMessageReceived(int sessionId,const void * data,unsigned int dataLen)496 static void PassiveMessageReceived(int sessionId, const void* data, unsigned int dataLen)
497 {
498 LOG("[cb][pass]MessageRec sid:%d, data len:%u", sessionId, dataLen);
499 if (data == NULL) {
500 LOG("[cb][pass]MessageRec invalid data=null sid[%d]", sessionId);
501 g_waitFlag = WAIT_FAIL_VALUE;
502 return;
503 }
504 int ret = SendMessage(sessionId, data, dataLen);
505 LOG("[cb][pass]MessageRec send back ret[%d]", ret);
506 if (ret == SOFTBUS_OK) {
507 g_waitFlag = WAIT_SUCCESS_VALUE;
508 } else {
509 g_waitFlag = WAIT_FAIL_VALUE;
510 }
511 }
512
PerfSessionOpened(int sessionId,int result)513 static int PerfSessionOpened(int sessionId, int result)
514 {
515 g_openSessionTimeEnd = GetCurrentTimeOfMs();
516
517 if (result == SOFTBUS_OK) {
518 g_waitFlag = WAIT_SUCCESS_VALUE;
519 } else {
520 LOG("[cb][perf]open session result fail, ret:%d", result);
521 g_waitFlag = WAIT_FAIL_VALUE;
522 }
523 return SOFTBUS_OK;
524 }
525
PerfSessionClosed(int sessionId)526 static void PerfSessionClosed(int sessionId)
527 {
528 LOG("[cb][perf]closed session,sid[%d]", sessionId);
529 }
530
PerfBytesReceived(int sessionId,const void * data,unsigned int dataLen)531 static void PerfBytesReceived(int sessionId, const void* data, unsigned int dataLen)
532 {
533 g_transTimeEnd = GetCurrentTimeOfMs();
534
535 LOG("[cb][perf]Byte recv");
536 g_waitFlag = WAIT_SUCCESS_VALUE;
537 }
538
PerfMessageReceived(int sessionId,const void * data,unsigned int dataLen)539 static void PerfMessageReceived(int sessionId, const void* data, unsigned int dataLen)
540 {
541 LOG("[cb][perf]Message recv");
542 }
543
ProxySessionOpened(int sessionId,int result)544 static int ProxySessionOpened(int sessionId, int result)
545 {
546 LOG("[cb][proxy]open session proxy sid[%d],rst[%d]", sessionId, result);
547 if (result == SOFTBUS_OK) {
548 g_waitFlag4Proxy = WAIT_SUCCESS_VALUE;
549 } else {
550 g_waitFlag4Proxy = WAIT_FAIL_VALUE;
551 }
552 return SOFTBUS_OK;
553 }
554
ProxySessionClosed(int sessionId)555 static void ProxySessionClosed(int sessionId)
556 {
557 LOG("[cb][proxy]close session proxy sid[%d]", sessionId);
558 g_waitFlag4Proxy = WAIT_SUCCESS_VALUE;
559 }
560
ProxyBytesReceived(int sessionId,const void * data,unsigned int dataLen)561 static void ProxyBytesReceived(int sessionId, const void* data, unsigned int dataLen)
562 {
563 LOG("[cb][proxy]ByteRec sid:%d, data len:%u", sessionId, dataLen);
564 if (data == NULL) {
565 LOG("[cb][proxy]ByteRec invalid data=null sid:[%d]", sessionId);
566 g_waitFlag4Proxy = WAIT_FAIL_VALUE;
567 } else {
568 g_waitFlag4Proxy = WAIT_SUCCESS_VALUE;
569 }
570 }
571
ProxyMessageReceived(int sessionId,const void * data,unsigned int dataLen)572 static void ProxyMessageReceived(int sessionId, const void* data, unsigned int dataLen)
573 {
574 LOG("[cb][proxy]MessageRec sid:%d, data len:%u", sessionId, dataLen);
575 if (data == NULL) {
576 LOG("[cb][proxy]MessageRec invalid data=null sid[%d]", sessionId);
577 g_waitFlag4Proxy = WAIT_FAIL_VALUE;
578 } else {
579 g_waitFlag4Proxy = WAIT_SUCCESS_VALUE;
580 }
581 }
582
StreamSessionOpened(int sessionId,int result)583 static int StreamSessionOpened(int sessionId, int result)
584 {
585 LOG("[cb][stream]open session sessionId[%d],rst[%d]", sessionId, result);
586 if (result == SOFTBUS_OK) {
587 g_waitFlag4Stream = WAIT_SUCCESS_VALUE;
588 } else {
589 g_waitFlag4Stream = WAIT_FAIL_VALUE;
590 }
591 return SOFTBUS_OK;
592 }
593
StreamSessionClosed(int sessionId)594 static void StreamSessionClosed(int sessionId)
595 {
596 LOG("[cb][stream]close session sessionId[%d]", sessionId);
597 }
598
599
StreamReceived(int sessionId,const StreamData * data,const StreamData * ext,const StreamFrameInfo * frame)600 static void StreamReceived(int sessionId, const StreamData *data, const StreamData *ext, const StreamFrameInfo *frame)
601 {
602 if (data != NULL) {
603 LOG("[cb][stream]ByteRec sessionId:%d, data= %.*s.\n", sessionId, data->bufLen, data->buf);
604 g_waitFlag4Stream = WAIT_SUCCESS_VALUE;
605 }
606 }
607
ResetWaitFlag(void)608 void ResetWaitFlag(void)
609 {
610 g_waitFlag = WAIT_DEF_VALUE;
611 }
612
ResetWaitFlag4Data(void)613 void ResetWaitFlag4Data(void)
614 {
615 g_waitFlag4Data = WAIT_DEF_VALUE;
616 }
617
ResetWaitFlag4Ctl(void)618 void ResetWaitFlag4Ctl(void)
619 {
620 g_waitFlag4Ctl = WAIT_DEF_VALUE;
621 }
622
ResetWaitFlag4Proxy(void)623 void ResetWaitFlag4Proxy(void)
624 {
625 g_waitFlag4Proxy = WAIT_DEF_VALUE;
626 }
627
ResetwaitCount4Online(void)628 void ResetwaitCount4Online(void)
629 {
630 g_nodeOnlineCount = 0;
631 }
632
ResetwaitCount4Offline(void)633 void ResetwaitCount4Offline(void)
634 {
635 g_nodeOfflineCount = 0;
636 }
637
RegisterDeviceStateDefCallback(void)638 int RegisterDeviceStateDefCallback(void)
639 {
640 return RegNodeDeviceStateCb(DEF_PKG_NAME, &g_defNodeStateCallback);
641 }
642
UnRegisterDeviceStateDefCallback(void)643 int UnRegisterDeviceStateDefCallback(void)
644 {
645 return UnregNodeDeviceStateCb(&g_defNodeStateCallback);
646 }
647
CreateSsAndOpenSession4Data(void)648 int CreateSsAndOpenSession4Data(void)
649 {
650 int ret;
651 int timeout = 10;
652 ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_DATA, g_sessionlistener4Data);
653 if (ret != SOFTBUS_OK) {
654 LOG("call CreateSessionServer[data] fail, ret:%d", ret);
655 return ret;
656 }
657
658 ResetWaitFlag4Data();
659 int sessionId;
660 sessionId = OpenSession(SESSION_NAME_DATA, SESSION_NAME_DATA, g_networkId, DEF_GROUP_ID, g_sessionAttr4Data);
661 if (sessionId < SESSION_ID_MIN) {
662 LOG("call OpenSession[data] fail, ret sid:%d,netId:%s", sessionId, g_networkId);
663 ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_DATA);
664 if (ret != SOFTBUS_OK) {
665 LOG("RemoveSessionServer[data] fail, ret:%d", ret);
666 }
667 return SOFTBUS_ERR;
668 }
669 SetCurrentSessionId4Data(sessionId);
670 LOG("call OpenSession[data] success,sid:%d", sessionId);
671
672 ret = Wait4Session(timeout, SESSION_4DATA);
673 if (ret != SOFTBUS_OK) {
674 LOG("OpenSession[data] fail");
675 ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_DATA);
676 if (ret != SOFTBUS_OK) {
677 LOG("RemoveSessionServer[data] fail, ret:%d", ret);
678 }
679 return SOFTBUS_ERR;
680 }
681 return ret;
682 }
683
CreateSsAndOpenSession4Ctl(void)684 int CreateSsAndOpenSession4Ctl(void)
685 {
686 int ret;
687 int timeout = 10;
688 ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_CTL, g_sessionlistener4Ctl);
689 if (ret != SOFTBUS_OK) {
690 LOG("call CreateSessionServer[ctl] fail, ret:%d", ret);
691 return ret;
692 }
693
694 int sessionId;
695 ResetWaitFlag4Ctl();
696 sessionId = OpenSession(SESSION_NAME_CTL, SESSION_NAME_CTL, g_networkId, DEF_GROUP_ID, g_sessionAttr4Ctl);
697 if (sessionId < SESSION_ID_MIN) {
698 LOG("call OpenSession[ctl] fail, ret sid:%d", sessionId);
699 ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_CTL);
700 if (ret != SOFTBUS_OK) {
701 LOG("RemoveSessionServer[ctl] fail, ret:%d", ret);
702 }
703 return SOFTBUS_ERR;
704 }
705 SetCurrentSessionId4Ctl(sessionId);
706 LOG("call OpenSession[ctl] success,sid:%d", sessionId);
707
708 ret = Wait4Session(timeout, SESSION_4CTL);
709 if (ret != SOFTBUS_OK) {
710 LOG("OpenSession[ctl] fail");
711 ret = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_CTL);
712 if (ret != SOFTBUS_OK) {
713 LOG("RemoveSessionServer[ctl] fail, ret:%d", ret);
714 }
715 return SOFTBUS_ERR;
716 }
717 return ret;
718 }
719
CreateSsAndOpenSession4Proxy(void)720 int CreateSsAndOpenSession4Proxy(void)
721 {
722 int ret;
723 int timeout = 10;
724 ret = CreateSessionServer(DEF_PKG_NAME, SESSION_NAME_PROXY, g_sessionlistener4Proxy);
725 if (ret != SOFTBUS_OK) {
726 LOG("call CreateSessionServer[Proxy] fail, ret:%d", ret);
727 return ret;
728 }
729
730 int sessionId;
731 ResetWaitFlag();
732 sessionId = OpenSession(SESSION_NAME_PROXY, SESSION_NAME_PROXY, g_networkId, DEF_GROUP_ID, g_sessionAttr4Proxy);
733 if (sessionId < SESSION_ID_MIN) {
734 LOG("call OpenSession[Proxy] fail, ret sid:%d", sessionId);
735 return SOFTBUS_ERR;
736 }
737 SetCurrentSessionId4Proxy(sessionId);
738 LOG("call OpenSession[Proxy] success,sid:%d", sessionId);
739
740 ret = Wait4Session(timeout, SESSION_4PROXY);
741 if (ret != SOFTBUS_OK) {
742 LOG("OpenSession[Proxy] fail");
743 return SOFTBUS_ERR;
744 }
745 return ret;
746 }
747
SendData4Data(DataType type,int size)748 int SendData4Data(DataType type, int size)
749 {
750 int ret;
751 if (size > 0) {
752 g_expectDataContent = (char*)calloc(1, size);
753 if (g_expectDataContent == NULL) {
754 LOG("[send data]calloc fail");
755 return SOFTBUS_ERR;
756 }
757 (void)memset_s(g_expectDataContent, size, g_fillContentChar, size);
758 } else {
759 LOG("[send data]invalid param[size>=1]");
760 return SOFTBUS_ERR;
761 }
762
763 g_expectDataSize = size;
764 ResetWaitFlag();
765 if (type == DATA_TYPE_MSG) {
766 ret = SendMessage(g_currentSessionId4Data, g_expectDataContent, size);
767 } else if (type == DATA_TYPE_BYTE) {
768 ret = SendBytes(g_currentSessionId4Data, g_expectDataContent, size);
769 } else {
770 LOG("[send data]invalid param[DataType]");
771 free(g_expectDataContent);
772 return SOFTBUS_ERR;
773 }
774 if (ret != SOFTBUS_OK) {
775 LOG("[send data]call SendX fail, ret:%d", ret);
776 free(g_expectDataContent);
777 return SOFTBUS_ERR;
778 }
779 LOG("[send data]call SendX success");
780 int sleeptime = 15;
781 int timeout = 5;
782 if (size > SIZE_1K * SIZE_1K) {
783 timeout = sleeptime;
784 }
785 ret = Wait(timeout);
786 free(g_expectDataContent);
787 g_expectDataContent = NULL;
788 return ret;
789 }
790
SendData4Message(DataType type,int size)791 int SendData4Message(DataType type, int size)
792 {
793 int ret;
794 if (size > 0) {
795 g_expectMessageContent = (char*)calloc(1, size);
796 if (g_expectMessageContent == NULL) {
797 LOG("[send data]calloc fail");
798 return SOFTBUS_ERR;
799 }
800 (void)memset_s(g_expectMessageContent, size, g_fillContentChar, size);
801 } else {
802 LOG("[send data]invalid param[size>=1]");
803 return SOFTBUS_ERR;
804 }
805
806 g_expectDataSize = size;
807 ResetWaitFlag();
808 if (type == DATA_TYPE_MSG) {
809 ret = SendMessage(g_currentSessionId4Proxy, g_expectMessageContent, size);
810 } else if (type == DATA_TYPE_BYTE) {
811 ret = SendBytes(g_currentSessionId4Proxy, g_expectMessageContent, size);
812 } else {
813 LOG("[send data]invalid param[DataType]");
814 free(g_expectMessageContent);
815 return SOFTBUS_ERR;
816 }
817 if (ret != SOFTBUS_OK) {
818 LOG("[send data]call SendX fail, ret:%d", ret);
819 free(g_expectMessageContent);
820 return SOFTBUS_ERR;
821 }
822 free(g_expectMessageContent);
823 g_expectMessageContent = NULL;
824 return ret;
825 }
826
CloseSessionAndRemoveSs4Data(void)827 int CloseSessionAndRemoveSs4Data(void)
828 {
829 int ret4Close;
830 int timeout = 2;
831 // 主动close不回调
832 ResetWaitFlag4Data();
833 CloseSession(g_currentSessionId4Data);
834 ret4Close = Wait4Session(timeout, SESSION_4DATA);
835 if (ret4Close == SOFTBUS_OK) {
836 LOG("CloseSession[data] recv callback");
837 }
838
839 int ret4Ss;
840 ret4Ss = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_DATA);
841 if (ret4Ss != SOFTBUS_OK) {
842 LOG("RemoveSessionServer[data] fail, ret:%d", ret4Ss);
843 }
844
845 if (ret4Ss != SOFTBUS_OK || ret4Close == SOFTBUS_OK) {
846 return SOFTBUS_ERR;
847 } else {
848 return SOFTBUS_OK;
849 }
850 }
851
CloseSessionAndRemoveSs4Ctl(void)852 int CloseSessionAndRemoveSs4Ctl(void)
853 {
854 int ret4Close;
855 int timeout = 2;
856 ResetWaitFlag4Ctl();
857 CloseSession(g_currentSessionId4Ctl);
858 ret4Close = Wait4Session(timeout, SESSION_4CTL);
859 if (ret4Close == SOFTBUS_OK) {
860 LOG("CloseSession[ctrl] recv callback");
861 }
862
863 int ret4Ss;
864 ret4Ss = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_CTL);
865 if (ret4Ss != SOFTBUS_OK) {
866 LOG("RemoveSessionServer[ctl] fail, ret:%d", ret4Ss);
867 }
868
869 if (ret4Ss != SOFTBUS_OK || ret4Close == SOFTBUS_OK) {
870 return SOFTBUS_ERR;
871 } else {
872 return SOFTBUS_OK;
873 }
874 }
875
CloseSessionAndRemoveSs4Proxy(void)876 int CloseSessionAndRemoveSs4Proxy(void)
877 {
878 int ret4Close;
879 int timeout = 2;
880 ResetWaitFlag();
881 CloseSession(g_currentSessionId4Proxy);
882 ret4Close = Wait(timeout);
883 if (ret4Close == SOFTBUS_OK) {
884 LOG("CloseSession[Proxy] recv callback");
885 }
886
887 int ret4Ss;
888 ret4Ss = RemoveSessionServer(DEF_PKG_NAME, SESSION_NAME_PROXY);
889 if (ret4Ss != SOFTBUS_OK) {
890 LOG("RemoveSessionServer[Proxy] fail, ret:%d", ret4Ss);
891 }
892
893 if (ret4Ss != SOFTBUS_OK || ret4Close == SOFTBUS_OK) {
894 return SOFTBUS_ERR;
895 } else {
896 return SOFTBUS_OK;
897 }
898 }
899
OpenSession4DataByP2p(void)900 int OpenSession4DataByP2p(void)
901 {
902 int ret;
903 int timeout = 10;
904 ResetWaitFlag4Data();
905 int sId = OpenSession(SESSION_NAME_DATA, SESSION_NAME_DATA, g_networkId, DEF_GROUP_ID, g_p2pattribute);
906 if (sId < SESSION_ID_MIN) {
907 LOG("openSession[data] fail,id:%d, netId:%s", sId, g_networkId);
908 return SOFTBUS_ERR;
909 }
910 SetCurrentSessionId4Data(sId);
911 ret = Wait4Session(timeout, SESSION_4DATA);
912 if (ret != SOFTBUS_OK) {
913 LOG("Wait4Session[data] fail");
914 return SOFTBUS_ERR;
915 }
916
917 return ret;
918 }
919
OpenSession4ProxyByP2p(void)920 int OpenSession4ProxyByP2p(void)
921 {
922 int ret;
923 int timeout = 10;
924 ResetWaitFlag4Proxy();
925 int sId = OpenSession(SESSION_NAME_PROXY, SESSION_NAME_PROXY, g_networkId, DEF_GROUP_ID, g_p2pattributeProxy);
926 if (sId < SESSION_ID_MIN) {
927 LOG("openSession[data] fail,id:%d, netId:%s", sId, g_networkId);
928 return SOFTBUS_ERR;
929 }
930 SetCurrentSessionId4Proxy(sId);
931 ret = Wait4Session(timeout, SESSION_4PROXY);
932 if (ret != SOFTBUS_OK) {
933 LOG("Wait4Session[data] fail");
934 return SOFTBUS_ERR;
935 }
936
937 return ret;
938 }
939
OpenSessionBatch4Data(char groupId[][GROUP_ID_LEN],int * sessionId,int count)940 int OpenSessionBatch4Data(char groupId[][GROUP_ID_LEN], int* sessionId, int count)
941 {
942 int ret;
943 int timeout = 10;
944 int rstFlag = SOFTBUS_OK;
945 for (int i = 0; i < count; i++) {
946 ResetWaitFlag4Data();
947 int sId = OpenSession(SESSION_NAME_DATA, SESSION_NAME_DATA, g_networkId, groupId[i], g_sessionAttr4Data);
948 if (sId < SESSION_ID_MIN) {
949 LOG("call OpenSession[data] fail,sid:%d,i:%d", sId, i);
950 rstFlag = SOFTBUS_ERR;
951 continue;
952 }
953 SetCurrentSessionId4Data(sId);
954 *(sessionId + i) = sId;
955 ret = Wait4Session(timeout, SESSION_4DATA);
956 if (ret != SOFTBUS_OK) {
957 LOG("Wait4Session[data] fail,i:%d", i);
958 rstFlag = SOFTBUS_ERR;
959 }
960 }
961 return rstFlag;
962 }
963
OpenSessionBatch4Ctl(char groupId[][GROUP_ID_LEN],int * sessionId,int count)964 int OpenSessionBatch4Ctl(char groupId[][GROUP_ID_LEN], int* sessionId, int count)
965 {
966 int ret;
967 int timeout = 10;
968 int rstFlag = SOFTBUS_OK;
969 for (int i = 0; i < count; i++) {
970 ResetWaitFlag4Ctl();
971 int sId = OpenSession(SESSION_NAME_CTL, SESSION_NAME_CTL, g_networkId, groupId[i], g_sessionAttr4Ctl);
972 if (sId < SESSION_ID_MIN) {
973 LOG("call OpenSession[ctrl] fail,sid:%d,i:%d", sId, i);
974 rstFlag = SOFTBUS_ERR;
975 continue;
976 }
977 SetCurrentSessionId4Ctl(sId);
978 *(sessionId + i) = sId;
979 ret = Wait4Session(timeout, SESSION_4CTL);
980 if (ret != SOFTBUS_OK) {
981 LOG("Wait4Session[ctrl] fail,i:%d", i);
982 rstFlag = SOFTBUS_ERR;
983 }
984 }
985 return rstFlag;
986 }
987
CloseSessionBatch4Data(int * sessionId,int count)988 int CloseSessionBatch4Data(int* sessionId, int count)
989 {
990 for (int i = 0; i < count; i++) {
991 int sid = *(sessionId + i);
992 LOG("close session[data] sid:%d", sid);
993
994 SetCurrentSessionId4Data(sid);
995 CloseSession(sid);
996 }
997 return SOFTBUS_OK;
998 }
999
CloseSessionBatch4Ctl(int * sessionId,int count)1000 int CloseSessionBatch4Ctl(int* sessionId, int count)
1001 {
1002 for (int i = 0; i < count; i++) {
1003 int sid = *(sessionId + i);
1004 LOG("close session[ctrl] sid:%d", sid);
1005
1006 SetCurrentSessionId4Ctl(sid);
1007 CloseSession(sid);
1008 }
1009 return SOFTBUS_OK;
1010 }
1011
WaitNodeCount(int timeout,WaitNodeStateType state,int expectCount)1012 int WaitNodeCount(int timeout, WaitNodeStateType state, int expectCount)
1013 {
1014 LOG("Wait4Node,timeout:%d, type:%d, exp count:%d", timeout, state, expectCount);
1015 int hitFlag = -1;
1016 while (timeout > 0) {
1017 sleep(ONE_SECOND);
1018 switch (state) {
1019 case STATE_ONLINE:
1020 if (g_nodeOnlineCount == expectCount) {
1021 LOG("Wait4Node[online] succ,timeout:%d", timeout);
1022 hitFlag = 1;
1023 }
1024 break;
1025 case STATE_OFFLINE:
1026 if (g_nodeOfflineCount == expectCount) {
1027 LOG("Wait4Node[offline] succ,timeout:%d", timeout);
1028 hitFlag = 1;
1029 }
1030 break;
1031 default:
1032 LOG("Wait4Node state error");
1033 hitFlag = 1;
1034 break;
1035 }
1036 if (hitFlag != -1) {
1037 break;
1038 }
1039 timeout--;
1040 }
1041 switch (state) {
1042 case STATE_ONLINE:
1043 if (g_nodeOnlineCount != expectCount) {
1044 LOG("Wait4Node[online] fail[exp:%d, real:%d]", expectCount, g_nodeOnlineCount);
1045 return SOFTBUS_ERR;
1046 }
1047 break;
1048 case STATE_OFFLINE:
1049 if (g_nodeOfflineCount != expectCount) {
1050 LOG("Wait4Node[offline] fail[exp:%d, real:%d]", expectCount, g_nodeOfflineCount);
1051 return SOFTBUS_ERR;
1052 }
1053 break;
1054 default:
1055 return SOFTBUS_ERR;
1056 }
1057 return SOFTBUS_OK;
1058 }
1059
1060 // set/get function
ResetClosedSessionCount4Data(void)1061 void ResetClosedSessionCount4Data(void)
1062 {
1063 g_sessionCloseCount4Data = 0;
1064 }
1065
ResetClosedSessionCount4Ctrl(void)1066 void ResetClosedSessionCount4Ctrl(void)
1067 {
1068 g_sessionCloseCount4Ctrl = 0;
1069 }
1070
GetClosedSessionCount4Data(void)1071 int GetClosedSessionCount4Data(void)
1072 {
1073 return g_sessionCloseCount4Data;
1074 }
1075
GetClosedSessionCount4Ctrl(void)1076 int GetClosedSessionCount4Ctrl(void)
1077 {
1078 return g_sessionCloseCount4Ctrl;
1079 }
1080
GetNetworkId(void)1081 char* GetNetworkId(void)
1082 {
1083 return g_networkId;
1084 }
1085
1086 // To one device only
CheckRemoteDeviceIsNull(int isSetNetId)1087 int CheckRemoteDeviceIsNull(int isSetNetId)
1088 {
1089 int nodeNum = 0;
1090 NodeBasicInfo* nodeInfo = NULL;
1091 int ret = GetAllNodeDeviceInfo(DEF_PKG_NAME, &nodeInfo, &nodeNum);
1092 LOG("[check]get node number is:%d, ret:%d", nodeNum, ret);
1093 if (nodeInfo != NULL && nodeNum > 0) {
1094 LOG("[check]get netid is:%s", nodeInfo->networkId);
1095 if (isSetNetId == BOOL_TRUE) {
1096 (void)strncpy_s(g_networkId, NETWORK_ID_BUF_LEN, nodeInfo->networkId, NETWORK_ID_BUF_LEN);
1097 }
1098 FreeNodeInfo(nodeInfo);
1099 return SOFTBUS_OK;
1100 } else {
1101 LOG("[check]get nodeInfo is null");
1102 return SOFTBUS_ERR;
1103 }
1104 }
1105
GetSessionListenser4Data(void)1106 ISessionListener* GetSessionListenser4Data(void)
1107 {
1108 return g_sessionlistener4Data;
1109 }
1110
GetSessionListenser4Ctl(void)1111 ISessionListener* GetSessionListenser4Ctl(void)
1112 {
1113 return g_sessionlistener4Ctl;
1114 }
1115
GetSessionListenser4Proxy(void)1116 ISessionListener* GetSessionListenser4Proxy(void)
1117 {
1118 return g_sessionlistener4Proxy;
1119 }
1120
GetSessionListenser4Stream(void)1121 ISessionListener* GetSessionListenser4Stream(void)
1122 {
1123 return g_sessionlistener4Stream;
1124 }
1125
GetSendFileListener(void)1126 IFileSendListener* GetSendFileListener(void)
1127 {
1128 return g_fileSendListener;
1129 }
1130
GetRecvFileListener(void)1131 IFileReceiveListener* GetRecvFileListener(void)
1132 {
1133 return g_fileRecvListener;
1134 }
1135
GetSessionAttr4Data(void)1136 SessionAttribute* GetSessionAttr4Data(void)
1137 {
1138 return g_sessionAttr4Data;
1139 }
1140
GetSessionAttr4DataP2p(void)1141 SessionAttribute* GetSessionAttr4DataP2p(void)
1142 {
1143 return g_p2pattribute;
1144 }
1145
GetSessionAttr4ProxyP2p(void)1146 SessionAttribute* GetSessionAttr4ProxyP2p(void)
1147 {
1148 return g_p2pattributeProxy;
1149 }
GetSessionAttr4Ctl(void)1150 SessionAttribute* GetSessionAttr4Ctl(void)
1151 {
1152 return g_sessionAttr4Ctl;
1153 }
1154
GetSessionAttr4Proxy(void)1155 SessionAttribute* GetSessionAttr4Proxy(void)
1156 {
1157 return g_sessionAttr4Proxy;
1158 }
1159
SetCurrentSessionId4Data(int sessionId)1160 void SetCurrentSessionId4Data(int sessionId)
1161 {
1162 g_currentSessionId4Data = sessionId;
1163 }
1164
SetCurrentSessionId4Ctl(int sessionId)1165 void SetCurrentSessionId4Ctl(int sessionId)
1166 {
1167 g_currentSessionId4Ctl = sessionId;
1168 }
1169
SetCurrentSessionId4Proxy(int sessionId)1170 void SetCurrentSessionId4Proxy(int sessionId)
1171 {
1172 g_currentSessionId4Proxy = sessionId;
1173 }
1174
1175
GetCurrentSessionId4Data(void)1176 int GetCurrentSessionId4Data(void)
1177 {
1178 return g_currentSessionId4Data;
1179 }
1180
GetCurrentSessionId4Ctl(void)1181 int GetCurrentSessionId4Ctl(void)
1182 {
1183 return g_currentSessionId4Ctl;
1184 }
1185
1186
GetCurrentSessionId4Proxy(void)1187 int GetCurrentSessionId4Proxy(void)
1188 {
1189 return g_currentSessionId4Proxy;
1190 }
1191
GetOpenSessionCount4Proxy(void)1192 int GetOpenSessionCount4Proxy(void)
1193 {
1194 return g_sessionOpenCount4Proxy;
1195 }
1196
TestSetUp(void)1197 void TestSetUp(void)
1198 {
1199 g_defNodeStateCallback.events = EVENT_NODE_STATE_MASK;
1200 g_defNodeStateCallback.onNodeOnline = OnDefNodeOnline;
1201 g_defNodeStateCallback.onNodeOffline = OnDefNodeOffline;
1202 g_defNodeStateCallback.onNodeBasicInfoChanged = OnDefNodeBasicInfoChanged;
1203
1204 g_defDiscCallback.OnDeviceFound = OnDefDeviceFound;
1205 g_defDiscCallback.OnDiscoverFailed = OnDefDiscoverFail;
1206 g_defDiscCallback.OnDiscoverySuccess = OnDefDiscoverSuccess;
1207
1208 if (g_sessionlistener4Data == NULL) {
1209 g_sessionlistener4Data = (ISessionListener*)calloc(1, sizeof(ISessionListener));
1210 g_sessionlistener4Data->OnSessionOpened = DataSessionOpened;
1211 g_sessionlistener4Data->OnSessionClosed = DataSessionClosed;
1212 g_sessionlistener4Data->OnMessageReceived = DataMessageReceived;
1213 g_sessionlistener4Data->OnBytesReceived = DataBytesReceived;
1214 }
1215 if (g_sessionlistener4Ctl == NULL) {
1216 g_sessionlistener4Ctl = (ISessionListener*)calloc(1, sizeof(ISessionListener));
1217 g_sessionlistener4Ctl->OnSessionOpened = ControlSessionOpened;
1218 g_sessionlistener4Ctl->OnSessionClosed = ControlSessionClosed;
1219 g_sessionlistener4Ctl->OnMessageReceived = ControlMessageReceived;
1220 g_sessionlistener4Ctl->OnBytesReceived = ControlBytesReceived;
1221 }
1222 if (g_sessionlistener4Pass == NULL) {
1223 g_sessionlistener4Pass = (ISessionListener*)calloc(1, sizeof(ISessionListener));
1224 g_sessionlistener4Pass->OnSessionOpened = PassiveSessionOpened;
1225 g_sessionlistener4Pass->OnSessionClosed = PassiveSessionClosed;
1226 g_sessionlistener4Pass->OnMessageReceived = PassiveMessageReceived;
1227 g_sessionlistener4Pass->OnBytesReceived = PassiveBytesReceived;
1228 }
1229 if (g_sessionlistener4Perf == NULL) {
1230 g_sessionlistener4Perf = (ISessionListener*)calloc(1, sizeof(ISessionListener));
1231 g_sessionlistener4Perf->OnSessionOpened = PerfSessionOpened;
1232 g_sessionlistener4Perf->OnSessionClosed = PerfSessionClosed;
1233 g_sessionlistener4Perf->OnMessageReceived = PerfMessageReceived;
1234 g_sessionlistener4Perf->OnBytesReceived = PerfBytesReceived;
1235 }
1236 if (g_sessionlistener4Proxy == NULL) {
1237 g_sessionlistener4Proxy = (ISessionListener*)calloc(1, sizeof(ISessionListener));
1238 g_sessionlistener4Proxy->OnSessionOpened = ProxySessionOpened;
1239 g_sessionlistener4Proxy->OnSessionClosed = ProxySessionClosed;
1240 g_sessionlistener4Proxy->OnMessageReceived = ProxyMessageReceived;
1241 g_sessionlistener4Proxy->OnBytesReceived = ProxyBytesReceived;
1242 }
1243 if (g_sessionlistener4Stream == NULL) {
1244 g_sessionlistener4Stream = (ISessionListener*)calloc(1, sizeof(ISessionListener));
1245 g_sessionlistener4Stream->OnSessionOpened = StreamSessionOpened;
1246 g_sessionlistener4Stream->OnSessionClosed = StreamSessionClosed;
1247 g_sessionlistener4Stream->OnStreamReceived = StreamReceived;
1248 }
1249
1250 if (g_fileSendListener == NULL) {
1251 g_fileSendListener = (IFileSendListener*)calloc(1, sizeof(IFileSendListener));
1252 g_fileSendListener->OnSendFileProcess = OnSendFileProcess;
1253 g_fileSendListener->OnSendFileFinished = OnSendFileFinished;
1254 g_fileSendListener->OnFileTransError = OnSendFileTransError;
1255 };
1256 if (g_fileRecvListener == NULL) {
1257 g_fileRecvListener = (IFileReceiveListener*)calloc(1, sizeof(IFileReceiveListener));
1258 g_fileRecvListener->OnReceiveFileStarted = OnReceiveFileStarted;
1259 g_fileRecvListener->OnReceiveFileProcess = OnReceiveFileProcess;
1260 g_fileRecvListener->OnReceiveFileFinished = OnReceiveFileFinished;
1261 g_fileRecvListener->OnFileTransError = OnRecvFileTransError;
1262 }
1263
1264 if (g_sessionAttr4Data == NULL) {
1265 g_sessionAttr4Data = (SessionAttribute*)calloc(1, sizeof(SessionAttribute));
1266 g_sessionAttr4Data->dataType = TYPE_BYTES;
1267 }
1268 if (g_sessionAttr4Ctl == NULL) {
1269 g_sessionAttr4Ctl = (SessionAttribute*)calloc(1, sizeof(SessionAttribute));
1270 g_sessionAttr4Ctl->dataType = TYPE_BYTES;
1271 }
1272 if (g_sessionAttr4Pass == NULL) {
1273 g_sessionAttr4Pass = (SessionAttribute*)calloc(1, sizeof(SessionAttribute));
1274 g_sessionAttr4Pass->dataType = TYPE_BYTES;
1275 }
1276 if (g_sessionAttr4Perf == NULL) {
1277 g_sessionAttr4Perf = (SessionAttribute*)calloc(1, sizeof(SessionAttribute));
1278 g_sessionAttr4Perf->dataType = TYPE_BYTES;
1279 }
1280 if (g_sessionAttr4Proxy == NULL) {
1281 g_sessionAttr4Proxy = (SessionAttribute*)calloc(1, sizeof(SessionAttribute));
1282 g_sessionAttr4Proxy->dataType = TYPE_MESSAGE;
1283 }
1284 if (g_p2pattribute == NULL) {
1285 g_p2pattribute = (SessionAttribute*)calloc(1, sizeof(SessionAttribute));
1286 g_p2pattribute->dataType = TYPE_BYTES;
1287 g_p2pattribute->linkTypeNum = 1;
1288 g_p2pattribute->linkType[0] = LINK_TYPE_WIFI_P2P;
1289 }
1290 if (g_p2pattributeProxy == NULL) {
1291 g_p2pattributeProxy = (SessionAttribute*)calloc(1, sizeof(SessionAttribute));
1292 g_p2pattributeProxy->dataType = TYPE_MESSAGE;
1293 g_p2pattributeProxy->linkTypeNum = 1;
1294 g_p2pattributeProxy->linkType[0] = LINK_TYPE_WIFI_P2P;
1295 }
1296
1297 if (g_barrier == NULL) {
1298 g_barrier = (pthread_barrier_t*)calloc(1, sizeof(pthread_barrier_t));
1299 }
1300
1301 if (g_sId4Task2 == NULL) {
1302 g_sId4Task2 = (int*)malloc(sizeof(int) * DEF_SEND_DATA_SID_COUNT);
1303 }
1304 if (g_sId4Task3 == NULL) {
1305 g_sId4Task3 = (int*)malloc(sizeof(int) * DEF_SEND_DATA_SID_COUNT);
1306 }
1307 }
1308
TestTearDown(void)1309 void TestTearDown(void)
1310 {
1311 if (g_sessionlistener4Data != NULL) {
1312 free(g_sessionlistener4Data);
1313 g_sessionlistener4Data = NULL;
1314 }
1315 if (g_sessionlistener4Ctl != NULL) {
1316 free(g_sessionlistener4Ctl);
1317 g_sessionlistener4Ctl = NULL;
1318 }
1319 if (g_sessionlistener4Pass != NULL) {
1320 free(g_sessionlistener4Pass);
1321 g_sessionlistener4Pass = NULL;
1322 }
1323 if (g_sessionlistener4Perf != NULL) {
1324 free(g_sessionlistener4Perf);
1325 g_sessionlistener4Perf = NULL;
1326 }
1327 if (g_sessionlistener4Proxy != NULL) {
1328 free(g_sessionlistener4Proxy);
1329 g_sessionlistener4Proxy = NULL;
1330 }
1331 if (g_sessionlistener4Stream != NULL) {
1332 free(g_sessionlistener4Stream);
1333 g_sessionlistener4Stream = NULL;
1334 }
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
1345 if (g_sessionAttr4Data != NULL) {
1346 free(g_sessionAttr4Data);
1347 g_sessionAttr4Data = NULL;
1348 }
1349 if (g_sessionAttr4Ctl != NULL) {
1350 free(g_sessionAttr4Ctl);
1351 g_sessionAttr4Ctl = NULL;
1352 }
1353 if (g_sessionAttr4Pass != NULL) {
1354 free(g_sessionAttr4Pass);
1355 g_sessionAttr4Pass = NULL;
1356 }
1357 if (g_sessionAttr4Perf != NULL) {
1358 free(g_sessionAttr4Perf);
1359 g_sessionAttr4Perf = NULL;
1360 }
1361 if (g_sessionAttr4Proxy != NULL) {
1362 free(g_sessionAttr4Proxy);
1363 g_sessionAttr4Proxy = NULL;
1364 }
1365 if (g_p2pattribute != NULL) {
1366 free(g_p2pattribute);
1367 g_p2pattribute = NULL;
1368 }
1369 if (g_p2pattributeProxy != NULL) {
1370 free(g_p2pattributeProxy);
1371 g_p2pattributeProxy = NULL;
1372 }
1373 if (g_barrier != NULL) {
1374 free(g_barrier);
1375 g_barrier = NULL;
1376 }
1377 if (g_sId4Task2 != NULL) {
1378 free(g_sId4Task2);
1379 g_sId4Task2 = NULL;
1380 }
1381 if (g_sId4Task3 != NULL) {
1382 free(g_sId4Task3);
1383 g_sId4Task3 = NULL;
1384 }
1385 }
1386
AddPermission(void)1387 void AddPermission (void)
1388 {
1389 uint64_t tokenId;
1390 const char *perms[2];
1391 perms[0] = OHOS_PERMISSION_DISTRIBUTED_SOFTBUS_CENTER;
1392 perms[1] = OHOS_PERMISSION_DISTRIBUTED_DATASYNC;
1393 NativeTokenInfoParams infoTnstance = {
1394 .dcapsNum = 0,
1395 .permsNum = 2,
1396 .aclsNum = 0,
1397 .dcaps = NULL,
1398 .perms = perms,
1399 .acls = NULL,
1400 .processName = "dsoftbus_service",
1401 .aplStr = "system_core",
1402 };
1403 tokenId = GetAccessTokenId(&infoTnstance);
1404 SetSelfTokenID(tokenId);
1405 }
1406