Files
frameworks_base/services/java/com/android/server/net/InterfaceIdentity.java
Jeff Sharkey d2a458750e Map network identity using ConnectivityService.
Instead of deriving network identity based on raw subsystem broadcasts,
listen for updates from ConnectivityService.  Added atomic view of all
active NetworkState, and build map from "iface" to NetworkIdentity set
for stats tracking.

To avoid exposing internal complexity, INetworkStatsService calls use
general templates.  Added TelephonyManager mapping to classify network
types using broad labels like "3G" or "4G", used to drive templates.

Cleaned up Objects and Preconditions.

Change-Id: I1d4c1403f0503bc3635a59bb378841ba42239a91
2011-06-07 23:09:25 -07:00

74 lines
2.2 KiB
Java

/*
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.server.net;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ProtocolException;
import java.util.HashSet;
/**
* Identity of a {@code iface}, defined by the set of {@link NetworkIdentity}
* active on that interface.
*
* @hide
*/
public class InterfaceIdentity extends HashSet<NetworkIdentity> {
private static final int VERSION_CURRENT = 1;
public InterfaceIdentity() {
}
public InterfaceIdentity(DataInputStream in) throws IOException {
final int version = in.readInt();
switch (version) {
case VERSION_CURRENT: {
final int size = in.readInt();
for (int i = 0; i < size; i++) {
add(new NetworkIdentity(in));
}
break;
}
default: {
throw new ProtocolException("unexpected version: " + version);
}
}
}
public void writeToStream(DataOutputStream out) throws IOException {
out.writeInt(VERSION_CURRENT);
out.writeInt(size());
for (NetworkIdentity ident : this) {
ident.writeToStream(out);
}
}
/**
* Test if any {@link NetworkIdentity} on this interface matches the given
* template and IMEI.
*/
public boolean matchesTemplate(int networkTemplate, String subscriberId) {
for (NetworkIdentity ident : this) {
if (ident.matchesTemplate(networkTemplate, subscriberId)) {
return true;
}
}
return false;
}
}