16c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN/* 26c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN * Copyright (C) 2018 The Android Open Source Project 36c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN * 46c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN * Licensed under the Apache License, Version 2.0 (the "License"); 56c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN * you may not use this file except in compliance with the License. 66c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN * You may obtain a copy of the License at 76c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN * 86c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN * http://www.apache.org/licenses/LICENSE-2.0 96c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN * 106c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN * Unless required by applicable law or agreed to in writing, software 116c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN * distributed under the License is distributed on an "AS IS" BASIS, 126c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN * See the License for the specific language governing permissions and 146c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN * limitations under the License. 156c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN */ 166c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN 176c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VANpackage android.net.util; 186c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN 196c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VANimport java.util.Collections; 206c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VANimport java.util.HashSet; 216c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VANimport java.util.Set; 226c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VANimport java.util.StringJoiner; 236c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN 246c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN 256c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN/** 266c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN * @hide 276c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN */ 286c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VANpublic class InterfaceSet { 296c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN public final Set<String> ifnames; 306c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN 316c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN public InterfaceSet(String... names) { 326c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN final Set<String> nameSet = new HashSet<>(); 336c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN for (String name : names) { 346c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN if (name != null) nameSet.add(name); 356c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN } 366c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN ifnames = Collections.unmodifiableSet(nameSet); 376c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN } 386c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN 396c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN @Override 406c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN public String toString() { 416c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN final StringJoiner sj = new StringJoiner(",", "[", "]"); 426c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN for (String ifname : ifnames) sj.add(ifname); 436c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN return sj.toString(); 446c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN } 456c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN 466c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN @Override 476c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN public boolean equals(Object obj) { 486c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN return obj != null 496c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN && obj instanceof InterfaceSet 506c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN && ifnames.equals(((InterfaceSet)obj).ifnames); 516c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN } 526c02f9942aaf4f6665018e0c7f07aeceb5ae752eRemi NGUYEN VAN} 53