blob: 7ecf4640a481282683a621cfec0b8f8c0d3691e6 [file] [log] [blame]
/*
* Copyright 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.android.iwlan.proto;
import android.net.ipsec.ike.exceptions.IkeIOException;
import android.net.ipsec.ike.exceptions.IkeInternalException;
import com.google.android.iwlan.IwlanError;
import com.google.android.iwlan.IwlanStatsLog;
public class MetricsAtom {
private int mMessageId;
private int mApnType;
private boolean mIsHandover;
private String mEpdgServerAddress;
private int mSourceRat;
private boolean mIsCellularRoaming;
private boolean mIsNetworkConnected;
private int mTransportType;
private int mSetupRequestResult;
private int mIwlanError;
private int mDataCallFailCause;
private int mProcessingDurationMillis;
private int mEpdgServerSelectionDurationMillis;
private int mIkeTunnelEstablishmentDurationMillis;
private int mTunnelState;
private int mHandoverFailureMode;
private int mRetryDurationMillis;
private int mWifiSignalValue;
private String mIwlanErrorWrappedClassname;
private String mIwlanErrorWrappedStackFirstFrame;
public void setMessageId(int messageId) {
this.mMessageId = messageId;
}
public void setApnType(int apnType) {
this.mApnType = apnType;
}
public void setIsHandover(boolean isHandover) {
this.mIsHandover = isHandover;
}
public void setEpdgServerAddress(String epdgServerAddress) {
this.mEpdgServerAddress = epdgServerAddress;
}
public void setSourceRat(int sourceRat) {
this.mSourceRat = sourceRat;
}
public void setIsCellularRoaming(boolean isCellularRoaming) {
this.mIsCellularRoaming = isCellularRoaming;
}
public void setIsNetworkConnected(boolean isNetworkConnected) {
this.mIsNetworkConnected = isNetworkConnected;
}
public void setTransportType(int transportType) {
this.mTransportType = transportType;
}
public void setSetupRequestResult(int setupRequestResult) {
this.mSetupRequestResult = setupRequestResult;
}
public void setIwlanError(int iwlanError) {
this.mIwlanError = iwlanError;
}
public void setDataCallFailCause(int dataCallFailCause) {
this.mDataCallFailCause = dataCallFailCause;
}
public void setProcessingDurationMillis(int processingDurationMillis) {
this.mProcessingDurationMillis = processingDurationMillis;
}
public void setEpdgServerSelectionDurationMillis(int epdgServerSelectionDurationMillis) {
this.mEpdgServerSelectionDurationMillis = epdgServerSelectionDurationMillis;
}
public void setIkeTunnelEstablishmentDurationMillis(int ikeTunnelEstablishmentDurationMillis) {
this.mIkeTunnelEstablishmentDurationMillis = ikeTunnelEstablishmentDurationMillis;
}
public void setTunnelState(int tunnelState) {
this.mTunnelState = tunnelState;
}
public void setHandoverFailureMode(int handoverFailureMode) {
this.mHandoverFailureMode = handoverFailureMode;
}
public void setRetryDurationMillis(int retryDurationMillis) {
this.mRetryDurationMillis = retryDurationMillis;
}
public void setWifiSignalValue(int wifiSignalValue) {
this.mWifiSignalValue = wifiSignalValue;
}
public void setIwlanErrorWrappedClassnameAndStack(IwlanError iwlanError) {
Throwable iwlanErrorWrapped = iwlanError.getException();
if (iwlanErrorWrapped instanceof IkeInternalException
|| iwlanErrorWrapped instanceof IkeIOException) {
iwlanErrorWrapped = iwlanErrorWrapped.getCause();
}
if (iwlanErrorWrapped == null) {
this.mIwlanErrorWrappedClassname = null;
this.mIwlanErrorWrappedStackFirstFrame = null;
return;
}
this.mIwlanErrorWrappedClassname = iwlanErrorWrapped.getClass().getCanonicalName();
StackTraceElement[] iwlanErrorWrappedStackTraceElements = iwlanErrorWrapped.getStackTrace();
this.mIwlanErrorWrappedStackFirstFrame =
iwlanErrorWrappedStackTraceElements.length != 0
? iwlanErrorWrappedStackTraceElements[0].toString()
: null;
}
public String getIwlanErrorWrappedClassname() {
return mIwlanErrorWrappedClassname;
}
public String getIwlanErrorWrappedStackFirstFrame() {
return mIwlanErrorWrappedStackFirstFrame;
}
public void sendMetricsData() {
if (mMessageId == IwlanStatsLog.IWLAN_SETUP_DATA_CALL_RESULT_REPORTED) {
IwlanStatsLog.write(
mMessageId,
mApnType,
mIsHandover,
mEpdgServerAddress,
mSourceRat,
mIsCellularRoaming,
mIsNetworkConnected,
mTransportType,
mSetupRequestResult,
mIwlanError,
mDataCallFailCause,
mProcessingDurationMillis,
mEpdgServerSelectionDurationMillis,
mIkeTunnelEstablishmentDurationMillis,
mTunnelState,
mHandoverFailureMode,
mRetryDurationMillis,
mIwlanErrorWrappedClassname,
mIwlanErrorWrappedStackFirstFrame);
return;
} else if (mMessageId == IwlanStatsLog.IWLAN_PDN_DISCONNECTED_REASON_REPORTED) {
IwlanStatsLog.write(
mMessageId,
mDataCallFailCause,
mIsNetworkConnected,
mTransportType,
mWifiSignalValue);
return;
}
}
}