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 Wifi2WifiNoNetIntegrator : public CompositeNetworkSelector { 41 public: 42 Wifi2WifiNoNetIntegrator(); 43 ~Wifi2WifiNoNetIntegrator() = default; 44 protected: 45 bool Nominate(NetworkCandidate &networkCandidate) override; 46 void GetCandidatesFromSubNetworkSelector() override; 47 }; 48 49 class Wifi2WifiQoeSlowIntegrator : public CompositeNetworkSelector { 50 public: 51 Wifi2WifiQoeSlowIntegrator(); 52 ~Wifi2WifiQoeSlowIntegrator() = default; 53 protected: 54 bool Nominate(NetworkCandidate &networkCandidate) override; 55 void GetCandidatesFromSubNetworkSelector() override; 56 }; 57 58 class SavedNetworkTracker final: public CompositeNetworkSelector { 59 public: 60 SavedNetworkTracker(); 61 protected: 62 bool Nominate(NetworkCandidate &networkCandidate) override; 63 void GetCandidatesFromSubNetworkSelector() override; 64 }; 65 66 class SuggestionNetworkTracker final: public SimpleNetworkSelector { 67 public: 68 SuggestionNetworkTracker(); 69 }; 70 71 class SimpleFilterNetworkSelector : public SimpleNetworkSelector, public SimpleWifiFilter { 72 public: 73 explicit SimpleFilterNetworkSelector(const std::string &networkSelectorName); 74 ~SimpleFilterNetworkSelector() override; 75 }; 76 77 class BlackListNetworkSelector final: public SimpleFilterNetworkSelector { 78 public: 79 BlackListNetworkSelector(); 80 protected: 81 bool Nominate(NetworkCandidate &networkCandidate) override; 82 bool Filter(NetworkCandidate &networkCandidate) override; 83 }; 84 85 class HasInternetNetworkSelector final: public SimpleFilterNetworkSelector { 86 public: 87 HasInternetNetworkSelector(); 88 protected: 89 bool Filter(NetworkCandidate &networkCandidate) override; 90 }; 91 92 #ifdef FEATURE_ITNETWORK_PREFERRED_SUPPORT 93 class CustNetPreferredNetworkSelector : public SimpleFilterNetworkSelector { 94 public: 95 CustNetPreferredNetworkSelector(); 96 protected: 97 bool Filter(NetworkCandidate &networkCandidate) override; 98 }; 99 #endif 100 101 class RecoveryNetworkSelector final: public SimpleFilterNetworkSelector { 102 public: 103 RecoveryNetworkSelector(); 104 protected: 105 bool Filter(NetworkCandidate &networkCandidate) override; 106 }; 107 108 class PortalNetworkSelector final : public SimpleNetworkSelector, public OrWifiFilter { 109 public: 110 PortalNetworkSelector(); 111 ~PortalNetworkSelector() override; 112 void InitFilter(); 113 std::string GetNetworkSelectorMsg() override; 114 protected: 115 bool Filter(NetworkCandidate &networkCandidate) override; 116 std::vector<NetworkCandidate*> filteredNetworkCandidates; 117 }; 118 119 class NoInternetNetworkSelector final: public SimpleFilterNetworkSelector { 120 public: 121 NoInternetNetworkSelector(); 122 protected: 123 bool Filter(NetworkCandidate &networkCandidate) override; 124 }; 125 126 class PreferredApSelector final: public SimpleFilterNetworkSelector { 127 public: 128 PreferredApSelector(); 129 protected: 130 bool Filter(NetworkCandidate &networkCandidate) override; 131 }; 132 } 133 #endif 134