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