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