1e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey/*
2e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey * Copyright (C) 2018 The Android Open Source Project
3e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey *
4e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey * Licensed under the Apache License, Version 2.0 (the "License");
5e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey * you may not use this file except in compliance with the License.
6e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey * You may obtain a copy of the License at
7e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey *
8e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey *      http://www.apache.org/licenses/LICENSE-2.0
9e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey *
10e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey * Unless required by applicable law or agreed to in writing, software
11e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey * distributed under the License is distributed on an "AS IS" BASIS,
12e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey * See the License for the specific language governing permissions and
14e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey * limitations under the License.
15e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey */
16e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey
17e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkeypackage com.android.server.net;
18e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey
19e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkeyimport android.net.NetworkStats;
20e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkeyimport android.net.NetworkTemplate;
21e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey
22e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkeypublic abstract class NetworkStatsManagerInternal {
23e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey    /** Return network layer usage total for traffic that matches template. */
24e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey    public abstract long getNetworkTotalBytes(NetworkTemplate template, long start, long end);
25e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey
26e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey    /** Return network layer usage per-UID for traffic that matches template. */
27e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey    public abstract NetworkStats getNetworkUidBytes(NetworkTemplate template, long start, long end);
28e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey
29e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey    /** Mark given UID as being in foreground for stats purposes. */
30e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey    public abstract void setUidForeground(int uid, boolean uidForeground);
31e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey
32e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey    /** Advise persistance threshold; may be overridden internally. */
33e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey    public abstract void advisePersistThreshold(long thresholdBytes);
34e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey
35e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey    /** Force update of statistics. */
36e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey    public abstract void forceUpdate();
37e0c2995d0f16246336d4385d5ebe631a60e12e86Jeff Sharkey}
38