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