NetworkEvent.java revision cfddd6879283860bb4d2cf2972ea086f585a37ec
1e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk/*
2e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * Copyright (C) 2016 The Android Open Source Project
3e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk *
4e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * Licensed under the Apache License, Version 2.0 (the "License");
5e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * you may not use this file except in compliance with the License.
6e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * You may obtain a copy of the License at
7e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk *
8e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk *      http://www.apache.org/licenses/LICENSE-2.0
9e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk *
10e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * Unless required by applicable law or agreed to in writing, software
11e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * distributed under the License is distributed on an "AS IS" BASIS,
12e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * See the License for the specific language governing permissions and
14e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * limitations under the License.
15e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk */
16e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk
17e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burkpackage android.net.metrics;
18e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk
19e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burkimport android.annotation.SystemApi;
20e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burkimport android.os.Parcel;
21e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burkimport android.os.Parcelable;
22e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burkimport android.util.SparseArray;
23e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk
24e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burkimport com.android.internal.util.MessageUtils;
25e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk
26e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk/**
27e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk * {@hide}
28e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk */
29e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk@SystemApi
30e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burkpublic final class NetworkEvent implements Parcelable {
31e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk
32e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    public static final int NETWORK_CONNECTED            = 1;
33e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    public static final int NETWORK_VALIDATED            = 2;
34e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    public static final int NETWORK_VALIDATION_FAILED    = 3;
35e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    public static final int NETWORK_CAPTIVE_PORTAL_FOUND = 4;
36e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    public static final int NETWORK_LINGER               = 5;
37e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    public static final int NETWORK_UNLINGER             = 6;
38e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    public static final int NETWORK_DISCONNECTED         = 7;
39e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk
40e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    public final int netId;
41e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    public final int eventType;
42e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    public final long durationMs;
43e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk
44e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    /** {@hide} */
45e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    public NetworkEvent(int netId, int eventType, long durationMs) {
46e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk        this.netId = netId;
47e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk        this.eventType = eventType;
48e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk        this.durationMs = durationMs;
49e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    }
50e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk
51e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    /** {@hide} */
52e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    public NetworkEvent(int netId, int eventType) {
53e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk        this(netId, eventType, 0);
54e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    }
55e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk
56e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    private NetworkEvent(Parcel in) {
57e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk        netId = in.readInt();
58e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk        eventType = in.readInt();
59e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk        durationMs = in.readLong();
60e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    }
61e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk
62e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    public void writeToParcel(Parcel out, int flags) {
63e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk        out.writeInt(netId);
64e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk        out.writeInt(eventType);
65e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk        out.writeLong(durationMs);
66e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    }
67e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk
68e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    public int describeContents() {
69e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk        return 0;
70e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    }
71e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk
72e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    public static final Parcelable.Creator<NetworkEvent> CREATOR
73e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk        = new Parcelable.Creator<NetworkEvent>() {
74e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk        public NetworkEvent createFromParcel(Parcel in) {
75e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk            return new NetworkEvent(in);
76e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk        }
77e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk
78e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk        public NetworkEvent[] newArray(int size) {
79e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk            return new NetworkEvent[size];
80e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk        }
81e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    };
82e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk
83e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    public static void logEvent(int netId, int eventType) {
84e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    }
85e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk
86e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    public static void logValidated(int netId, long durationMs) {
87e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    }
88e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk
89e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    public static void logCaptivePortalFound(int netId, long durationMs) {
90e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    }
91e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk
92e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    @Override
93e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    public String toString() {
94e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk        return String.format("NetworkEvent(%d, %s, %dms)",
95e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk                netId, Decoder.constants.get(eventType), durationMs);
96e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    }
97e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk
98e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    final static class Decoder {
99e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk        static final SparseArray<String> constants = MessageUtils.findMessageNames(
100e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk                new Class[]{NetworkEvent.class}, new String[]{"NETWORK_"});
101e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk    }
102e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk}
103e1ce491a25faf06fdeab00dd938515f71f28b095Phil Burk