150e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski/* 250e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski * Copyright (C) 2015 The Android Open Source Project 350e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski * 450e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); 550e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski * you may not use this file except in compliance with the License. 650e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski * You may obtain a copy of the License at 750e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski * 850e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 950e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski * 1050e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski * Unless required by applicable law or agreed to in writing, software 1150e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, 1250e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1350e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski * See the License for the specific language governing permissions and 1450e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski * limitations under the License. 1550e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski */ 1650e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinskipackage android.bluetooth; 1750e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski 1850e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinskiimport android.os.Parcel; 1950e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinskiimport android.os.Parcelable; 2050e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski 2150e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski/** 2250e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski * Record of data traffic (in bytes) by an application identified by its UID. 2350e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski * @hide 2450e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski */ 2550e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinskipublic class UidTraffic implements Cloneable, Parcelable { 2650e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski private final int mAppUid; 2750e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski private long mRxBytes; 2850e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski private long mTxBytes; 2950e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski 3050e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski public UidTraffic(int appUid) { 3150e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski mAppUid = appUid; 3250e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski } 3350e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski 3450e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski public UidTraffic(int appUid, long rx, long tx) { 3550e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski mAppUid = appUid; 3650e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski mRxBytes = rx; 3750e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski mTxBytes = tx; 3850e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski } 3950e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski 4050e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski UidTraffic(Parcel in) { 4150e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski mAppUid = in.readInt(); 4250e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski mRxBytes = in.readLong(); 4350e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski mTxBytes = in.readLong(); 4450e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski } 4550e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski 4650e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski @Override 4750e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski public void writeToParcel(Parcel dest, int flags) { 4850e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski dest.writeInt(mAppUid); 4950e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski dest.writeLong(mRxBytes); 5050e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski dest.writeLong(mTxBytes); 5150e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski } 5250e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski 5350e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski public void setRxBytes(long bytes) { 5450e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski mRxBytes = bytes; 5550e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski } 5650e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski 5750e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski public void setTxBytes(long bytes) { 5850e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski mTxBytes = bytes; 5950e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski } 6050e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski 6150e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski public void addRxBytes(long bytes) { 6250e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski mRxBytes += bytes; 6350e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski } 6450e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski 6550e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski public void addTxBytes(long bytes) { 6650e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski mTxBytes += bytes; 6750e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski } 6850e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski 6950e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski public int getUid() { 7050e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski return mAppUid; 7150e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski } 7250e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski 7350e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski public long getRxBytes() { 7450e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski return mRxBytes; 7550e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski } 7650e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski 7750e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski public long getTxBytes() { 7850e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski return mTxBytes; 7950e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski } 8050e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski 8150e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski @Override 8250e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski public int describeContents() { 8350e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski return 0; 8450e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski } 8550e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski 8650e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski @Override 8750e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski public UidTraffic clone() { 8850e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski return new UidTraffic(mAppUid, mRxBytes, mTxBytes); 8950e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski } 9050e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski 9150e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski @Override 9250e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski public String toString() { 9350e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski return "UidTraffic{" + 9450e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski "mAppUid=" + mAppUid + 9550e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski ", mRxBytes=" + mRxBytes + 9650e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski ", mTxBytes=" + mTxBytes + 9750e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski '}'; 9850e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski } 9950e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski 10050e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski public static final Creator<UidTraffic> CREATOR = new Creator<UidTraffic>() { 10150e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski @Override 10250e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski public UidTraffic createFromParcel(Parcel source) { 10350e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski return new UidTraffic(source); 10450e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski } 10550e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski 10650e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski @Override 10750e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski public UidTraffic[] newArray(int size) { 10850e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski return new UidTraffic[size]; 10950e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski } 11050e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski }; 11150e4760214dc3bab81b5ccf6df4d5ce5fa34d723Adam Lesinski} 112