NetworkAgentInfo.java revision 8cd33ed84e94036a5e1201485af7603dc6fb0d9b
1134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber/* 2134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber * Copyright (C) 2014 The Android Open Source Project 3134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber * 4134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 5134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber * you may not use this file except in compliance with the License. 6134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber * You may obtain a copy of the License at 7134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber * 8134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber * http://www.apache.org/licenses/LICENSE-2.0 9134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber * 10134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber * Unless required by applicable law or agreed to in writing, software 11134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 12134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber * See the License for the specific language governing permissions and 14134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber * limitations under the License. 15134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber */ 16134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber 17134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huberpackage com.android.server.connectivity; 18134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber 19377b2ec9a2885f9b6405b07ba900a9e3f4349c38Kévin PETITimport android.content.Context; 20134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huberimport android.net.LinkProperties; 21134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huberimport android.net.Network; 22134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huberimport android.net.NetworkCapabilities; 23134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huberimport android.net.NetworkInfo; 24134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huberimport android.net.NetworkMisc; 25134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huberimport android.net.NetworkRequest; 26134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huberimport android.os.Handler; 27134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huberimport android.os.Messenger; 28134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huberimport android.util.SparseArray; 291b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 30134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huberimport com.android.internal.util.AsyncChannel; 31f1d5aa162c02a16b7195a43a9bcea4d592600ac4James Dongimport com.android.server.connectivity.NetworkMonitor; 32af5dd7753e62353411cf0daf3b513c38818e9662Andreas Huber 33134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huberimport java.util.ArrayList; 34134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber 35bbba88cb1bdc34705d1477208990a06904c022e7Andreas Huber/** 36134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber * A bag class used by ConnectivityService for holding a collection of most recent 37134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber * information published by a particular NetworkAgent as well as the 38134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber * AsyncChannel/messenger for reaching that NetworkAgent and lists of NetworkRequests 39134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber * interested in using it. 40134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber */ 41134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huberpublic class NetworkAgentInfo { 42134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber public NetworkInfo networkInfo; 43134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber public final Network network; 44134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber public LinkProperties linkProperties; 45134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber public NetworkCapabilities networkCapabilities; 46134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber public int currentScore; 47134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber public final NetworkMonitor networkMonitor; 48134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber public final NetworkMisc networkMisc; 49134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber 50134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber // The list of NetworkRequests being satisfied by this Network. 51134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber public final SparseArray<NetworkRequest> networkRequests = new SparseArray<NetworkRequest>(); 52134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber public final ArrayList<NetworkRequest> networkLingered = new ArrayList<NetworkRequest>(); 53134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber 54134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber public final Messenger messenger; 55134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber public final AsyncChannel asyncChannel; 56134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber 57134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber public NetworkAgentInfo(Messenger messenger, AsyncChannel ac, int netId, NetworkInfo info, 58134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber LinkProperties lp, NetworkCapabilities nc, int score, Context context, Handler handler, 59134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber NetworkMisc misc) { 60134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber this.messenger = messenger; 61134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber asyncChannel = ac; 62134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber network = new Network(netId); 63134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber networkInfo = info; 64134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber linkProperties = lp; 65134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber networkCapabilities = nc; 66134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber currentScore = score; 67134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber networkMonitor = new NetworkMonitor(context, handler, this); 68134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber networkMisc = misc; 69134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber } 70134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber 71134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber public void addRequest(NetworkRequest networkRequest) { 72134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber networkRequests.put(networkRequest.requestId, networkRequest); 73134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber } 74134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber 75134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber public boolean isVPN() { 76134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber return networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN); 77134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber } 78134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber 79134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber public String toString() { 80134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber return "NetworkAgentInfo{ ni{" + networkInfo + "} network{" + 81134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber network + "} lp{" + 82134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber linkProperties + "} nc{" + 83134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber networkCapabilities + "} Score{" + currentScore + "} }"; 84134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber } 85134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber 86134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber public String name() { 87134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber return "NetworkAgentInfo [" + networkInfo.getTypeName() + " (" + 88134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber networkInfo.getSubtypeName() + ") - " + network.toString() + "]"; 89134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber } 90134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber} 91134ee6a324c35f39e3576172e4eae4c6de6eb9dcAndreas Huber