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 "softbus_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 LOG_INFO("NetworkingHandleMessage msg what=%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 LOG_INFO("CustomfreeMessage msg=%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
54 LOG_INFO("testHandler msg1");
55 SoftBusMessage* msg = SoftBusCalloc(sizeof(SoftBusMessage));
56 msg->what = CASE_ONE_WHAT;
57 msg->arg1 = CASE_ARG;
58 msg->handler = &g_networkingHandler;
59 g_networkingHandler.looper->PostMessage(g_networkingHandler.looper, msg);
60
61 LOG_INFO("testHandler msg4");
62 SoftBusMessage* msg4 = SoftBusCalloc(sizeof(SoftBusMessage));
63 msg4->what = CASE_FOUR_WHAT;
64 msg4->arg1 = CASE_ARG;
65 msg4->handler = &g_networkingHandler;
66 msg4->FreeMessage = CustomfreeMessage;
67 msg4->obj = SoftBusMalloc(CASE_FOUR_OBJ_SIZE);
68 g_networkingHandler.looper->PostMessageDelay(g_networkingHandler.looper, msg4, CASE_FOUR_POST_DELAY);
69
70 LOG_INFO("testHandler msg3");
71 SoftBusMessage* msg3 = SoftBusCalloc(sizeof(SoftBusMessage));
72 msg3->what = CASE_THREE_WHAT;
73 msg3->arg1 = CASE_ARG;
74 msg3->handler = &g_networkingHandler;
75 g_networkingHandler.looper->PostMessageDelay(g_networkingHandler.looper, msg3, CASE_THREE_POST_DELAY);
76 g_networkingHandler.looper->RemoveMessage(g_networkingHandler.looper, &g_networkingHandler, CASE_THREE_WHAT);
77
78 LOG_INFO("testHandler msg2");
79 SoftBusMessage* msg2 = SoftBusCalloc(sizeof(SoftBusMessage));
80 msg2->what = CASE_TWO_WHAT;
81 msg2->arg1 = CASE_ARG;
82 msg2->handler = &g_networkingHandler;
83 g_networkingHandler.looper->PostMessage(g_networkingHandler.looper, msg2);
84 }
85