• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2023 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_SUPPLIER_H
17 #define NET_SUPPLIER_H
18 
19 #include <map>
20 #include <memory>
21 #include <set>
22 #include <string>
23 #include <vector>
24 
25 #include "i_net_supplier_callback.h"
26 #include "i_net_conn_callback.h"
27 #include "http_proxy.h"
28 #include "network.h"
29 #include "net_caps.h"
30 #include "net_specifier.h"
31 #include "net_supplier_info.h"
32 
33 namespace OHOS {
34 namespace NetManagerStandard {
35 enum CallbackType {
36     CALL_TYPE_UNKNOWN = 0,
37     CALL_TYPE_AVAILABLE = 1,
38     CALL_TYPE_LOSTING = 2,
39     CALL_TYPE_LOST = 3,
40     CALL_TYPE_UPDATE_CAP = 4,
41     CALL_TYPE_UPDATE_LINK = 5,
42     CALL_TYPE_UNAVAILABLE = 6,
43     CALL_TYPE_BLOCK_STATUS = 7,
44 };
45 
46 class NetSupplier : public virtual RefBase {
47 public:
48     NetSupplier(NetBearType bearerType, const std::string &netSupplierIdent, const std::set<NetCap> &netCaps);
49     ~NetSupplier() = default;
50     bool operator==(const NetSupplier &netSupplier) const;
51     void SetNetwork(const std::shared_ptr<Network> &network);
52     void UpdateNetSupplierInfo(const NetSupplierInfo &netSupplierInfo);
53     int32_t UpdateNetLinkInfo(const NetLinkInfo &netLinkInfo);
54     uint32_t GetSupplierId() const;
55     NetBearType GetNetSupplierType() const;
56     std::string GetNetSupplierIdent() const;
57     bool CompareNetCaps(const std::set<NetCap> caps) const;
58     bool HasNetCap(NetCap cap) const;
59     bool HasNetCaps(const std::set<NetCap> &caps) const;
60     const NetCaps &GetNetCaps() const;
61     NetAllCapabilities GetNetCapabilities() const;
62     bool GetRoaming() const;
63     int8_t GetStrength() const;
64     uint16_t GetFrequency() const;
65     int32_t GetSupplierUid() const;
66     std::shared_ptr<Network> GetNetwork() const;
67     int32_t GetNetId() const;
68     sptr<NetHandle> GetNetHandle() const;
69     void GetHttpProxy(HttpProxy &httpProxy);
70     void UpdateNetConnState(NetConnState netConnState);
71     bool IsConnecting() const;
72     bool IsConnected() const;
73     void SetNetValid(bool ifValid);
74     bool IsNetValidated();
75     void SetNetScore(int32_t score);
76     int32_t GetNetScore() const;
77     void SetRealScore(int32_t score);
78     int32_t GetRealScore();
79     bool SupplierConnection(const std::set<NetCap> &netCaps);
80     bool SupplierDisconnection(const std::set<NetCap> &netCaps);
81     void SetRestrictBackground(bool restrictBackground);
82     bool GetRestrictBackground() const;
83     bool RequestToConnect(uint32_t reqId);
84     int32_t SelectAsBestNetwork(uint32_t reqId);
85     void ReceiveBestScore(uint32_t reqId, int32_t bestScore, uint32_t supplierId);
86     int32_t CancelRequest(uint32_t reqId);
87     void RemoveBestRequest(uint32_t reqId);
88     std::set<uint32_t> &GetBestRequestList();
89     void SetDefault();
90     void ClearDefault();
91     void RegisterSupplierCallback(const sptr<INetSupplierCallback> &callback);
92     void UpdateGlobalHttpProxy(const HttpProxy &httpProxy);
93     void SetSupplierType(int32_t type);
94     std::string GetSupplierType();
95     std::string TechToType(NetSlotTech type);
96 
97     bool ResumeNetworkInfo();
98 
99 private:
100     NetBearType netSupplierType_;
101     std::string netSupplierIdent_;
102     NetCaps netCaps_;
103     NetLinkInfo netLinkInfo_;
104     NetSupplierInfo netSupplierInfo_;
105     NetAllCapabilities netAllCapabilities_;
106     uint32_t supplierId_ = 0;
107     int32_t netScore_ = 0;
108     int32_t netRealScore_ = 0;
109     std::set<uint32_t> requestList_;
110     std::set<uint32_t> bestReqList_;
111     sptr<INetSupplierCallback> netController_ = nullptr;
112     std::shared_ptr<Network> network_ = nullptr;
113     sptr<NetHandle> netHandle_ = nullptr;
114     bool restrictBackground_ = true;
115     std::string type_ = "";
116 };
117 } // namespace NetManagerStandard
118 } // namespace OHOS
119 #endif // NET_SUPPLIER_H
120