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