• 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 "comm_log.h"
17 #include "message_handler.h"
18 #include "softbus_adapter_mem.h"
19 
20 #define CASE_ONE_WHAT   1
21 #define CASE_TWO_WHAT   2
22 #define CASE_THREE_WHAT 3
23 #define CASE_FOUR_WHAT  4
24 
25 #define CASE_ARG              2
26 #define CASE_FOUR_POST_DELAY  10000
27 #define CASE_THREE_POST_DELAY 2000
28 
29 #define CASE_FOUR_OBJ_SIZE 100
30 
NetworkingHandleMessage(const SoftBusMessage * msg)31 static void NetworkingHandleMessage(const SoftBusMessage *msg)
32 {
33     COMM_LOGI(COMM_TEST, "NetworkingHandleMessage msg what=%{public}d", msg->what);
34 }
35 
36 static SoftBusHandler g_networkingHandler = { .name = "g_networkingHandler" };
37 
CustomfreeMessage(SoftBusMessage * msg)38 static void CustomfreeMessage(SoftBusMessage *msg)
39 {
40     COMM_LOGI(COMM_TEST, "CustomfreeMessage msg=%{public}d", msg->what);
41     if (msg->what == CASE_FOUR_POST_DELAY) {
42         SoftBusFree(msg->obj);
43         SoftBusFree(msg);
44     }
45 }
46 
TestMessageHandler(void)47 void TestMessageHandler(void)
48 {
49     g_networkingHandler.looper = GetLooper(LOOP_TYPE_DEFAULT);
50     g_networkingHandler.HandleMessage = NetworkingHandleMessage;
51     COMM_LOGI(COMM_TEST, "testHandler msg1");
52     SoftBusMessage *msg = SoftBusCalloc(sizeof(SoftBusMessage));
53     if (msg == NULL) {
54         COMM_LOGI(COMM_TEST, "msg malloc fail");
55         return;
56     }
57     msg->what = CASE_ONE_WHAT;
58     msg->arg1 = CASE_ARG;
59     msg->handler = &g_networkingHandler;
60     g_networkingHandler.looper->PostMessage(g_networkingHandler.looper, msg);
61     COMM_LOGI(COMM_TEST, "testHandler msg4");
62     SoftBusMessage *msg4 = SoftBusCalloc(sizeof(SoftBusMessage));
63     if (msg4 == NULL) {
64         COMM_LOGI(COMM_TEST, "msg4 malloc fail");
65         return;
66     }
67     msg4->what = CASE_FOUR_WHAT;
68     msg4->arg1 = CASE_ARG;
69     msg4->handler = &g_networkingHandler;
70     msg4->FreeMessage = CustomfreeMessage;
71     msg4->obj = SoftBusMalloc(CASE_FOUR_OBJ_SIZE);
72     if (msg4->obj == NULL) {
73         COMM_LOGI(COMM_TEST, "msg4_obj malloc fail");
74         return;
75     }
76     g_networkingHandler.looper->PostMessageDelay(g_networkingHandler.looper, msg4, CASE_FOUR_POST_DELAY);
77     COMM_LOGI(COMM_TEST, "testHandler msg3");
78     SoftBusMessage *msg3 = SoftBusCalloc(sizeof(SoftBusMessage));
79     if (msg3 == NULL) {
80         COMM_LOGI(COMM_TEST, "msg3 malloc fail");
81         return;
82     }
83     msg3->what = CASE_THREE_WHAT;
84     msg3->arg1 = CASE_ARG;
85     msg3->handler = &g_networkingHandler;
86     g_networkingHandler.looper->PostMessageDelay(g_networkingHandler.looper, msg3, CASE_THREE_POST_DELAY);
87     g_networkingHandler.looper->RemoveMessage(g_networkingHandler.looper, &g_networkingHandler, CASE_THREE_WHAT);
88     COMM_LOGI(COMM_TEST, "testHandler msg2");
89     SoftBusMessage *msg2 = SoftBusCalloc(sizeof(SoftBusMessage));
90     if (msg2 == NULL) {
91         COMM_LOGI(COMM_TEST, "msg2 malloc fail");
92         return;
93     }
94     msg2->what = CASE_TWO_WHAT;
95     msg2->arg1 = CASE_ARG;
96     msg2->handler = &g_networkingHandler;
97     g_networkingHandler.looper->PostMessage(g_networkingHandler.looper, msg2);
98 }
99