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