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 OHOS_WIFI_NETWORK_SELECTOR_IMPL_H_ 17 #define OHOS_WIFI_NETWORK_SELECTOR_IMPL_H_ 18 19 #include <memory> 20 #include "network_selection.h" 21 22 namespace OHOS::Wifi::NetworkSelection { 23 class AutoConnectIntegrator : public CompositeNetworkSelector { 24 public: 25 AutoConnectIntegrator(); 26 protected: 27 bool Nominate(NetworkCandidate &networkCandidate) override; 28 void GetCandidatesFromSubNetworkSelector() override; 29 }; 30 31 class Wifi2WifiIntegrator : public CompositeNetworkSelector { 32 public: 33 Wifi2WifiIntegrator(); 34 ~Wifi2WifiIntegrator() = default; 35 protected: 36 bool Nominate(NetworkCandidate &networkCandidate) override; 37 void GetCandidatesFromSubNetworkSelector() override; 38 }; 39 40 class SavedNetworkTracker final: public CompositeNetworkSelector { 41 public: 42 SavedNetworkTracker(); 43 protected: 44 bool Nominate(NetworkCandidate &networkCandidate) override; 45 void GetCandidatesFromSubNetworkSelector() override; 46 }; 47 48 class SimpleFilterNetworkSelector : public SimpleNetworkSelector, public SimpleWifiFilter { 49 public: 50 explicit SimpleFilterNetworkSelector(const std::string &networkSelectorName); 51 ~SimpleFilterNetworkSelector() override; 52 }; 53 54 class BlackListNetworkSelector final: public SimpleFilterNetworkSelector { 55 public: 56 BlackListNetworkSelector(); 57 protected: 58 bool Nominate(NetworkCandidate &networkCandidate) override; 59 bool Filter(NetworkCandidate &networkCandidate) override; 60 }; 61 62 class HasInternetNetworkSelector final: public SimpleFilterNetworkSelector { 63 public: 64 HasInternetNetworkSelector(); 65 protected: 66 bool Filter(NetworkCandidate &networkCandidate) override; 67 }; 68 69 #ifdef FEATURE_ITNETWORK_PREFERRED_SUPPORT 70 class CustNetPreferredNetworkSelector : public SimpleFilterNetworkSelector { 71 public: 72 CustNetPreferredNetworkSelector(); 73 protected: 74 bool Filter(NetworkCandidate &networkCandidate) override; 75 }; 76 #endif 77 78 class RecoveryNetworkSelector final: public SimpleFilterNetworkSelector { 79 public: 80 RecoveryNetworkSelector(); 81 protected: 82 bool Filter(NetworkCandidate &networkCandidate) override; 83 }; 84 85 class PortalNetworkSelector final : public SimpleNetworkSelector, public OrWifiFilter { 86 public: 87 PortalNetworkSelector(); 88 ~PortalNetworkSelector() override; 89 void InitFilter(); 90 std::string GetNetworkSelectorMsg() override; 91 protected: 92 bool Filter(NetworkCandidate &networkCandidate) override; 93 std::vector<NetworkCandidate*> filteredNetworkCandidates; 94 }; 95 96 class NoInternetNetworkSelector final: public SimpleFilterNetworkSelector { 97 public: 98 NoInternetNetworkSelector(); 99 protected: 100 bool Filter(NetworkCandidate &networkCandidate) override; 101 }; 102 103 class PreferredApSelector final: public SimpleFilterNetworkSelector { 104 public: 105 PreferredApSelector(); 106 protected: 107 bool Filter(NetworkCandidate &networkCandidate) override; 108 }; 109 } 110 #endif 111