• 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 "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