1 /*
2  * Copyright (c) 2022 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 #ifndef NET_POLICY_BASE_H
17 #define NET_POLICY_BASE_H
18 
19 #include <string>
20 #include <vector>
21 
22 #include "event_handler.h"
23 
24 #include "net_manager_center.h"
25 #include "net_policy_callback.h"
26 #include "net_policy_core.h"
27 #include "net_policy_event_handler.h"
28 #include "net_policy_file.h"
29 #include "netmanager_hitrace.h"
30 #include "netsys_policy_wrapper.h"
31 
32 namespace OHOS {
33 namespace NetManagerStandard {
34 class NetPolicyBase : public std::enable_shared_from_this<NetPolicyBase> {
35 public:
36     NetPolicyBase();
37     virtual ~NetPolicyBase();
38     virtual void Init() = 0;
39 
40     /**
41      * Handle the event from NetPolicyCore
42      *
43      * @param eventId The event id
44      * @param policyEvent The infomations passed from other core
45      */
46     virtual void HandleEvent(int32_t eventId, const std::shared_ptr<PolicyEvent> &policyEvent) = 0;
47 
48     /**
49      * Send events to other policy cores.
50      *
51      * @param eventId The event id
52      * @param delayTime The delay time, if need the message send delay
53      */
54     void SendEvent(int32_t eventId, int64_t delayTime = 0);
55 
56     /**
57      * Send events to other policy cores.
58      *
59      * @param eventId The event id
60      * @param eventData The event data
61      * @param delayTime The delay time, if need the message send delay
62      */
63     void SendEvent(int32_t eventId, std::shared_ptr<PolicyEvent> &policyEvent, int64_t delayTime = 0);
64 
65 protected:
66     std::shared_ptr<NetPolicyCallback> GetCbInst();
67     std::shared_ptr<NetPolicyFile> GetFileInst();
68     std::shared_ptr<NetsysPolicyWrapper> GetNetsysInst();
69     NetManagerCenter &GetNetCenterInst();
70 };
71 } // namespace NetManagerStandard
72 } // namespace OHOS
73 #endif // NET_POLICY_BASE_H