• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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