1b1b8bc3fSopenharmony_ci/*
2b1b8bc3fSopenharmony_ci * Copyright (c) 2021-2023 Huawei Device Co., Ltd.
3b1b8bc3fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4b1b8bc3fSopenharmony_ci * you may not use this file except in compliance with the License.
5b1b8bc3fSopenharmony_ci * You may obtain a copy of the License at
6b1b8bc3fSopenharmony_ci *
7b1b8bc3fSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8b1b8bc3fSopenharmony_ci *
9b1b8bc3fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10b1b8bc3fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11b1b8bc3fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12b1b8bc3fSopenharmony_ci * See the License for the specific language governing permissions and
13b1b8bc3fSopenharmony_ci * limitations under the License.
14b1b8bc3fSopenharmony_ci */
15b1b8bc3fSopenharmony_ci#include "broadcast_manager.h"
16b1b8bc3fSopenharmony_ci
17b1b8bc3fSopenharmony_ci#include "common_event_manager.h"
18b1b8bc3fSopenharmony_ci#include "common_event_support.h"
19b1b8bc3fSopenharmony_ci#include "want.h"
20b1b8bc3fSopenharmony_ci
21b1b8bc3fSopenharmony_ci#include "net_mgr_log_wrapper.h"
22b1b8bc3fSopenharmony_ci
23b1b8bc3fSopenharmony_cinamespace OHOS {
24b1b8bc3fSopenharmony_cinamespace NetManagerStandard {
25b1b8bc3fSopenharmony_ciBroadcastManager::BroadcastManager() {}
26b1b8bc3fSopenharmony_ci
27b1b8bc3fSopenharmony_ciBroadcastManager::~BroadcastManager() {}
28b1b8bc3fSopenharmony_ci
29b1b8bc3fSopenharmony_cibool BroadcastManager::SendBroadcast(const BroadcastInfo &info, const std::map<std::string, bool> &param)
30b1b8bc3fSopenharmony_ci{
31b1b8bc3fSopenharmony_ci    return SendBroadcastEx(info, param);
32b1b8bc3fSopenharmony_ci}
33b1b8bc3fSopenharmony_ci
34b1b8bc3fSopenharmony_cibool BroadcastManager::SendBroadcast(const BroadcastInfo &info, const std::map<std::string, int32_t> &param)
35b1b8bc3fSopenharmony_ci{
36b1b8bc3fSopenharmony_ci    return SendBroadcastEx(info, param);
37b1b8bc3fSopenharmony_ci}
38b1b8bc3fSopenharmony_ci
39b1b8bc3fSopenharmony_cibool BroadcastManager::SendBroadcast(const BroadcastInfo &info, const std::map<std::string, int64_t> &param)
40b1b8bc3fSopenharmony_ci{
41b1b8bc3fSopenharmony_ci    return SendBroadcastEx(info, param);
42b1b8bc3fSopenharmony_ci}
43b1b8bc3fSopenharmony_ci
44b1b8bc3fSopenharmony_cibool BroadcastManager::SendBroadcast(const BroadcastInfo &info, const std::map<std::string, std::string> &param)
45b1b8bc3fSopenharmony_ci{
46b1b8bc3fSopenharmony_ci    return SendBroadcastEx(info, param);
47b1b8bc3fSopenharmony_ci}
48b1b8bc3fSopenharmony_ci
49b1b8bc3fSopenharmony_citemplate <typename T>
50b1b8bc3fSopenharmony_cibool BroadcastManager::SendBroadcastEx(const BroadcastInfo &info, const std::map<std::string, T> &param)
51b1b8bc3fSopenharmony_ci{
52b1b8bc3fSopenharmony_ci    if (info.action.empty()) {
53b1b8bc3fSopenharmony_ci        NETMGR_LOG_E("The parameter of action is empty");
54b1b8bc3fSopenharmony_ci        return false;
55b1b8bc3fSopenharmony_ci    }
56b1b8bc3fSopenharmony_ci    NETMGR_LOG_I("Net Send broadcast: %{public}s", info.action.c_str());
57b1b8bc3fSopenharmony_ci    AAFwk::Want want;
58b1b8bc3fSopenharmony_ci    want.SetAction(info.action);
59b1b8bc3fSopenharmony_ci    for (const auto &x : param) {
60b1b8bc3fSopenharmony_ci        want.SetParam(x.first, x.second);
61b1b8bc3fSopenharmony_ci    }
62b1b8bc3fSopenharmony_ci
63b1b8bc3fSopenharmony_ci    EventFwk::CommonEventData eventData;
64b1b8bc3fSopenharmony_ci    eventData.SetWant(want);
65b1b8bc3fSopenharmony_ci    eventData.SetCode(info.code);
66b1b8bc3fSopenharmony_ci    eventData.SetData(info.data);
67b1b8bc3fSopenharmony_ci    EventFwk::CommonEventPublishInfo publishInfo;
68b1b8bc3fSopenharmony_ci    publishInfo.SetOrdered(info.ordered);
69b1b8bc3fSopenharmony_ci    if (!info.permission.empty()) {
70b1b8bc3fSopenharmony_ci        publishInfo.SetSubscriberPermissions({info.permission});
71b1b8bc3fSopenharmony_ci    }
72b1b8bc3fSopenharmony_ci
73b1b8bc3fSopenharmony_ci    bool publishResult = EventFwk::CommonEventManager::PublishCommonEvent(eventData, publishInfo, nullptr);
74b1b8bc3fSopenharmony_ci    if (publishResult) {
75b1b8bc3fSopenharmony_ci        NETMGR_LOG_D("Send broadcast is successfull");
76b1b8bc3fSopenharmony_ci    } else {
77b1b8bc3fSopenharmony_ci        NETMGR_LOG_D("Send broadcast is failed");
78b1b8bc3fSopenharmony_ci    }
79b1b8bc3fSopenharmony_ci
80b1b8bc3fSopenharmony_ci    return publishResult;
81b1b8bc3fSopenharmony_ci}
82b1b8bc3fSopenharmony_ci} // namespace NetManagerStandard
83b1b8bc3fSopenharmony_ci} // namespace OHOS
84