Search in sources :

Example 56 with NetworkStatsHistory

use of android.net.NetworkStatsHistory in project android_frameworks_base by crdroidandroid.

the class NetworkStatsCollection method write.

public void write(DataOutputStream out) throws IOException {
    // cluster key lists grouped by ident
    final HashMap<NetworkIdentitySet, ArrayList<Key>> keysByIdent = Maps.newHashMap();
    for (Key key : mStats.keySet()) {
        ArrayList<Key> keys = keysByIdent.get(key.ident);
        if (keys == null) {
            keys = Lists.newArrayList();
            keysByIdent.put(key.ident, keys);
        }
        keys.add(key);
    }
    out.writeInt(FILE_MAGIC);
    out.writeInt(VERSION_UNIFIED_INIT);
    out.writeInt(keysByIdent.size());
    for (NetworkIdentitySet ident : keysByIdent.keySet()) {
        final ArrayList<Key> keys = keysByIdent.get(ident);
        ident.writeToStream(out);
        out.writeInt(keys.size());
        for (Key key : keys) {
            final NetworkStatsHistory history = mStats.get(key);
            out.writeInt(key.uid);
            out.writeInt(key.set);
            out.writeInt(key.tag);
            history.writeToStream(out);
        }
    }
    out.flush();
}
Also used : ArrayList(java.util.ArrayList) NetworkStatsHistory(android.net.NetworkStatsHistory)

Example 57 with NetworkStatsHistory

use of android.net.NetworkStatsHistory in project android_frameworks_base by crdroidandroid.

the class NetworkStatsServiceTest method assertUidTotal.

private void assertUidTotal(NetworkTemplate template, int uid, int set, int roaming, long rxBytes, long rxPackets, long txBytes, long txPackets, int operations) throws Exception {
    // verify history API
    final NetworkStatsHistory history = mSession.getHistoryForUid(template, uid, set, TAG_NONE, FIELD_ALL);
    assertValues(history, Long.MIN_VALUE, Long.MAX_VALUE, rxBytes, rxPackets, txBytes, txPackets, operations);
    // verify summary API
    final NetworkStats stats = mSession.getSummaryForAllUid(template, Long.MIN_VALUE, Long.MAX_VALUE, false);
    assertValues(stats, IFACE_ALL, uid, set, TAG_NONE, roaming, rxBytes, rxPackets, txBytes, txPackets, operations);
}
Also used : NetworkStats(android.net.NetworkStats) NetworkStatsHistory(android.net.NetworkStatsHistory)

Example 58 with NetworkStatsHistory

use of android.net.NetworkStatsHistory in project android_frameworks_base by ParanoidAndroid.

the class NetworkStatsCollection method readLegacyUid.

@Deprecated
public void readLegacyUid(File file, boolean onlyTags) throws IOException {
    final AtomicFile inputFile = new AtomicFile(file);
    DataInputStream in = null;
    try {
        in = new DataInputStream(new BufferedInputStream(inputFile.openRead()));
        // verify file magic header intact
        final int magic = in.readInt();
        if (magic != FILE_MAGIC) {
            throw new ProtocolException("unexpected magic: " + magic);
        }
        final int version = in.readInt();
        switch(version) {
            case VERSION_UID_INIT:
                {
                    // mapping into NetworkIdentitySet.
                    break;
                }
            case VERSION_UID_WITH_IDENT:
                {
                    // for a short time.
                    break;
                }
            case VERSION_UID_WITH_TAG:
            case VERSION_UID_WITH_SET:
                {
                    // uid := size *(NetworkIdentitySet size *(uid set tag NetworkStatsHistory))
                    final int identSize = in.readInt();
                    for (int i = 0; i < identSize; i++) {
                        final NetworkIdentitySet ident = new NetworkIdentitySet(in);
                        final int size = in.readInt();
                        for (int j = 0; j < size; j++) {
                            final int uid = in.readInt();
                            final int set = (version >= VERSION_UID_WITH_SET) ? in.readInt() : SET_DEFAULT;
                            final int tag = in.readInt();
                            final Key key = new Key(ident, uid, set, tag);
                            final NetworkStatsHistory history = new NetworkStatsHistory(in);
                            if ((tag == TAG_NONE) != onlyTags) {
                                recordHistory(key, history);
                            }
                        }
                    }
                    break;
                }
            default:
                {
                    throw new ProtocolException("unexpected version: " + version);
                }
        }
    } catch (FileNotFoundException e) {
    // missing stats is okay, probably first boot
    } finally {
        IoUtils.closeQuietly(in);
    }
}
Also used : ProtocolException(java.net.ProtocolException) AtomicFile(android.util.AtomicFile) BufferedInputStream(java.io.BufferedInputStream) FileNotFoundException(java.io.FileNotFoundException) NetworkStatsHistory(android.net.NetworkStatsHistory) DataInputStream(java.io.DataInputStream)

Example 59 with NetworkStatsHistory

use of android.net.NetworkStatsHistory in project android_frameworks_base by ParanoidAndroid.

the class NetworkStatsCollection method getSummary.

/**
     * Summarize all {@link NetworkStatsHistory} in this collection which match
     * the requested parameters.
     */
public NetworkStats getSummary(NetworkTemplate template, long start, long end) {
    final long now = System.currentTimeMillis();
    final NetworkStats stats = new NetworkStats(end - start, 24);
    final NetworkStats.Entry entry = new NetworkStats.Entry();
    NetworkStatsHistory.Entry historyEntry = null;
    // shortcut when we know stats will be empty
    if (start == end)
        return stats;
    for (Map.Entry<Key, NetworkStatsHistory> mapEntry : mStats.entrySet()) {
        final Key key = mapEntry.getKey();
        if (templateMatches(template, key.ident)) {
            final NetworkStatsHistory history = mapEntry.getValue();
            historyEntry = history.getValues(start, end, now, historyEntry);
            entry.iface = IFACE_ALL;
            entry.uid = key.uid;
            entry.set = key.set;
            entry.tag = key.tag;
            entry.rxBytes = historyEntry.rxBytes;
            entry.rxPackets = historyEntry.rxPackets;
            entry.txBytes = historyEntry.txBytes;
            entry.txPackets = historyEntry.txPackets;
            entry.operations = historyEntry.operations;
            if (!entry.isEmpty()) {
                stats.combineValues(entry);
            }
        }
    }
    return stats;
}
Also used : NetworkStats(android.net.NetworkStats) NetworkStatsHistory(android.net.NetworkStatsHistory) HashMap(java.util.HashMap) Map(java.util.Map)

Example 60 with NetworkStatsHistory

use of android.net.NetworkStatsHistory in project android_frameworks_base by ParanoidAndroid.

the class NetworkStatsCollection method getHistory.

/**
     * Combine all {@link NetworkStatsHistory} in this collection which match
     * the requested parameters.
     */
public NetworkStatsHistory getHistory(NetworkTemplate template, int uid, int set, int tag, int fields, long start, long end) {
    final NetworkStatsHistory combined = new NetworkStatsHistory(mBucketDuration, estimateBuckets(), fields);
    for (Map.Entry<Key, NetworkStatsHistory> entry : mStats.entrySet()) {
        final Key key = entry.getKey();
        final boolean setMatches = set == SET_ALL || key.set == set;
        if (key.uid == uid && setMatches && key.tag == tag && templateMatches(template, key.ident)) {
            combined.recordHistory(entry.getValue(), start, end);
        }
    }
    return combined;
}
Also used : NetworkStatsHistory(android.net.NetworkStatsHistory) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

NetworkStatsHistory (android.net.NetworkStatsHistory)109 NetworkStats (android.net.NetworkStats)21 ProtocolException (java.net.ProtocolException)18 AtomicFile (android.util.AtomicFile)12 BufferedInputStream (java.io.BufferedInputStream)12 DataInputStream (java.io.DataInputStream)12 FileNotFoundException (java.io.FileNotFoundException)12 RemoteException (android.os.RemoteException)10 ArrayList (java.util.ArrayList)6 INetworkStatsSession (android.net.INetworkStatsSession)5 NetworkPolicy (android.net.NetworkPolicy)5 Time (android.text.format.Time)5 ArrayMap (android.util.ArrayMap)5 IntArray (android.util.IntArray)5 Date (java.util.Date)5 Suppress (android.test.suitebuilder.annotation.Suppress)4 HashMap (java.util.HashMap)2 Map (java.util.Map)2 PendingIntent (android.app.PendingIntent)1 Context (android.content.Context)1