Search in sources :

Example 81 with NetworkStatsHistory

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

the class NetworkStatsCollection method read.

public void read(DataInputStream in) throws IOException {
    // 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_UNIFIED_INIT:
            {
                // 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 = in.readInt();
                        final int tag = in.readInt();
                        final Key key = new Key(ident, uid, set, tag);
                        final NetworkStatsHistory history = new NetworkStatsHistory(in);
                        recordHistory(key, history);
                    }
                }
                break;
            }
        default:
            {
                throw new ProtocolException("unexpected version: " + version);
            }
    }
}
Also used : ProtocolException(java.net.ProtocolException) NetworkStatsHistory(android.net.NetworkStatsHistory)

Example 82 with NetworkStatsHistory

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

the class NetworkStatsCollection method dump.

public void dump(IndentingPrintWriter pw) {
    final ArrayList<Key> keys = Lists.newArrayList();
    keys.addAll(mStats.keySet());
    Collections.sort(keys);
    for (Key key : keys) {
        pw.print("ident=");
        pw.print(key.ident.toString());
        pw.print(" uid=");
        pw.print(key.uid);
        pw.print(" set=");
        pw.print(NetworkStats.setToString(key.set));
        pw.print(" tag=");
        pw.println(NetworkStats.tagToString(key.tag));
        final NetworkStatsHistory history = mStats.get(key);
        pw.increaseIndent();
        history.dump(pw, true);
        pw.decreaseIndent();
    }
}
Also used : NetworkStatsHistory(android.net.NetworkStatsHistory)

Example 83 with NetworkStatsHistory

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

the class NetworkStatsCollection method recordData.

/**
     * Record given {@link android.net.NetworkStats.Entry} into this collection.
     */
public void recordData(NetworkIdentitySet ident, int uid, int set, int tag, long start, long end, NetworkStats.Entry entry) {
    final NetworkStatsHistory history = findOrCreateHistory(ident, uid, set, tag);
    history.recordData(start, end, entry);
    noteRecordedHistory(history.getStart(), history.getEnd(), entry.rxBytes + entry.txBytes);
}
Also used : NetworkStatsHistory(android.net.NetworkStatsHistory)

Example 84 with NetworkStatsHistory

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

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, @NetworkStatsAccess.Level int accessLevel, int callerUid) {
    final long now = System.currentTimeMillis();
    final NetworkStats stats = new NetworkStats(end - start, 24);
    // shortcut when we know stats will be empty
    if (start == end)
        return stats;
    final NetworkStats.Entry entry = new NetworkStats.Entry();
    NetworkStatsHistory.Entry historyEntry = null;
    for (int i = 0; i < mStats.size(); i++) {
        final Key key = mStats.keyAt(i);
        if (templateMatches(template, key.ident) && NetworkStatsAccess.isAccessibleToUser(key.uid, callerUid, accessLevel) && key.set < NetworkStats.SET_DEBUG_START) {
            final NetworkStatsHistory value = mStats.valueAt(i);
            historyEntry = value.getValues(start, end, now, historyEntry);
            entry.iface = IFACE_ALL;
            entry.uid = key.uid;
            entry.set = key.set;
            entry.tag = key.tag;
            entry.roaming = key.ident.isAnyMemberRoaming() ? ROAMING_YES : ROAMING_NO;
            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)

Example 85 with NetworkStatsHistory

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

the class NetworkStatsCollection method dumpCheckin.

/**
     * Dump all contained stats that match requested parameters, but group
     * together all matching {@link NetworkTemplate} under a single prefix.
     */
private void dumpCheckin(PrintWriter pw, long start, long end, NetworkTemplate groupTemplate, String groupPrefix) {
    final ArrayMap<Key, NetworkStatsHistory> grouped = new ArrayMap<>();
    // Walk through all history, grouping by matching network templates
    for (int i = 0; i < mStats.size(); i++) {
        final Key key = mStats.keyAt(i);
        final NetworkStatsHistory value = mStats.valueAt(i);
        if (!templateMatches(groupTemplate, key.ident))
            continue;
        if (key.set >= NetworkStats.SET_DEBUG_START)
            continue;
        final Key groupKey = new Key(null, key.uid, key.set, key.tag);
        NetworkStatsHistory groupHistory = grouped.get(groupKey);
        if (groupHistory == null) {
            groupHistory = new NetworkStatsHistory(value.getBucketDuration());
            grouped.put(groupKey, groupHistory);
        }
        groupHistory.recordHistory(value, start, end);
    }
    for (int i = 0; i < grouped.size(); i++) {
        final Key key = grouped.keyAt(i);
        final NetworkStatsHistory value = grouped.valueAt(i);
        if (value.size() == 0)
            continue;
        pw.print("c,");
        pw.print(groupPrefix);
        pw.print(',');
        pw.print(key.uid);
        pw.print(',');
        pw.print(NetworkStats.setToCheckinString(key.set));
        pw.print(',');
        pw.print(key.tag);
        pw.println();
        value.dumpCheckin(pw);
    }
}
Also used : ArrayMap(android.util.ArrayMap) NetworkStatsHistory(android.net.NetworkStatsHistory)

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