Merge "Add QoS filter matching and unit tests" am: 1e8b0527b5
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1610961 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: Icb205b790346fdd2706f1ee7427c4b4e76321552
This commit is contained in:
@@ -136,7 +136,7 @@ public final class DataCallResponse implements Parcelable {
|
|||||||
private final @HandoverFailureMode int mHandoverFailureMode;
|
private final @HandoverFailureMode int mHandoverFailureMode;
|
||||||
private final int mPduSessionId;
|
private final int mPduSessionId;
|
||||||
private final Qos mDefaultQos;
|
private final Qos mDefaultQos;
|
||||||
private final List<QosSession> mQosSessions;
|
private final List<QosBearerSession> mQosBearerSessions;
|
||||||
private final SliceInfo mSliceInfo;
|
private final SliceInfo mSliceInfo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -187,7 +187,7 @@ public final class DataCallResponse implements Parcelable {
|
|||||||
mHandoverFailureMode = HANDOVER_FAILURE_MODE_LEGACY;
|
mHandoverFailureMode = HANDOVER_FAILURE_MODE_LEGACY;
|
||||||
mPduSessionId = PDU_SESSION_ID_NOT_SET;
|
mPduSessionId = PDU_SESSION_ID_NOT_SET;
|
||||||
mDefaultQos = null;
|
mDefaultQos = null;
|
||||||
mQosSessions = new ArrayList<>();
|
mQosBearerSessions = new ArrayList<>();
|
||||||
mSliceInfo = null;
|
mSliceInfo = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -197,7 +197,7 @@ public final class DataCallResponse implements Parcelable {
|
|||||||
@Nullable List<InetAddress> dnsAddresses, @Nullable List<InetAddress> gatewayAddresses,
|
@Nullable List<InetAddress> dnsAddresses, @Nullable List<InetAddress> gatewayAddresses,
|
||||||
@Nullable List<InetAddress> pcscfAddresses, int mtu, int mtuV4, int mtuV6,
|
@Nullable List<InetAddress> pcscfAddresses, int mtu, int mtuV4, int mtuV6,
|
||||||
@HandoverFailureMode int handoverFailureMode, int pduSessionId,
|
@HandoverFailureMode int handoverFailureMode, int pduSessionId,
|
||||||
@Nullable Qos defaultQos, @Nullable List<QosSession> qosSessions,
|
@Nullable Qos defaultQos, @Nullable List<QosBearerSession> qosBearerSessions,
|
||||||
@Nullable SliceInfo sliceInfo) {
|
@Nullable SliceInfo sliceInfo) {
|
||||||
mCause = cause;
|
mCause = cause;
|
||||||
mSuggestedRetryTime = suggestedRetryTime;
|
mSuggestedRetryTime = suggestedRetryTime;
|
||||||
@@ -219,7 +219,7 @@ public final class DataCallResponse implements Parcelable {
|
|||||||
mHandoverFailureMode = handoverFailureMode;
|
mHandoverFailureMode = handoverFailureMode;
|
||||||
mPduSessionId = pduSessionId;
|
mPduSessionId = pduSessionId;
|
||||||
mDefaultQos = defaultQos;
|
mDefaultQos = defaultQos;
|
||||||
mQosSessions = qosSessions;
|
mQosBearerSessions = qosBearerSessions;
|
||||||
mSliceInfo = sliceInfo;
|
mSliceInfo = sliceInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -246,8 +246,8 @@ public final class DataCallResponse implements Parcelable {
|
|||||||
mHandoverFailureMode = source.readInt();
|
mHandoverFailureMode = source.readInt();
|
||||||
mPduSessionId = source.readInt();
|
mPduSessionId = source.readInt();
|
||||||
mDefaultQos = source.readParcelable(Qos.class.getClassLoader());
|
mDefaultQos = source.readParcelable(Qos.class.getClassLoader());
|
||||||
mQosSessions = new ArrayList<>();
|
mQosBearerSessions = new ArrayList<>();
|
||||||
source.readList(mQosSessions, QosSession.class.getClassLoader());
|
source.readList(mQosBearerSessions, QosBearerSession.class.getClassLoader());
|
||||||
mSliceInfo = source.readParcelable(SliceInfo.class.getClassLoader());
|
mSliceInfo = source.readParcelable(SliceInfo.class.getClassLoader());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -393,8 +393,8 @@ public final class DataCallResponse implements Parcelable {
|
|||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
@NonNull
|
@NonNull
|
||||||
public List<QosSession> getQosSessions() {
|
public List<QosBearerSession> getQosBearerSessions() {
|
||||||
return mQosSessions;
|
return mQosBearerSessions;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -426,7 +426,7 @@ public final class DataCallResponse implements Parcelable {
|
|||||||
.append(" handoverFailureMode=").append(getHandoverFailureMode())
|
.append(" handoverFailureMode=").append(getHandoverFailureMode())
|
||||||
.append(" pduSessionId=").append(getPduSessionId())
|
.append(" pduSessionId=").append(getPduSessionId())
|
||||||
.append(" defaultQos=").append(mDefaultQos)
|
.append(" defaultQos=").append(mDefaultQos)
|
||||||
.append(" qosSessions=").append(mQosSessions)
|
.append(" qosBearerSessions=").append(mQosBearerSessions)
|
||||||
.append(" sliceInfo=").append(mSliceInfo)
|
.append(" sliceInfo=").append(mSliceInfo)
|
||||||
.append("}");
|
.append("}");
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
@@ -446,10 +446,10 @@ public final class DataCallResponse implements Parcelable {
|
|||||||
mDefaultQos == other.mDefaultQos :
|
mDefaultQos == other.mDefaultQos :
|
||||||
mDefaultQos.equals(other.mDefaultQos);
|
mDefaultQos.equals(other.mDefaultQos);
|
||||||
|
|
||||||
final boolean isQosSessionsSame = (mQosSessions == null || mQosSessions == null) ?
|
final boolean isQosBearerSessionsSame = (mQosBearerSessions == null || mQosBearerSessions == null) ?
|
||||||
mQosSessions == other.mQosSessions :
|
mQosBearerSessions == other.mQosBearerSessions :
|
||||||
mQosSessions.size() == other.mQosSessions.size()
|
mQosBearerSessions.size() == other.mQosBearerSessions.size()
|
||||||
&& mQosSessions.containsAll(other.mQosSessions);
|
&& mQosBearerSessions.containsAll(other.mQosBearerSessions);
|
||||||
|
|
||||||
return mCause == other.mCause
|
return mCause == other.mCause
|
||||||
&& mSuggestedRetryTime == other.mSuggestedRetryTime
|
&& mSuggestedRetryTime == other.mSuggestedRetryTime
|
||||||
@@ -471,7 +471,7 @@ public final class DataCallResponse implements Parcelable {
|
|||||||
&& mHandoverFailureMode == other.mHandoverFailureMode
|
&& mHandoverFailureMode == other.mHandoverFailureMode
|
||||||
&& mPduSessionId == other.mPduSessionId
|
&& mPduSessionId == other.mPduSessionId
|
||||||
&& isQosSame
|
&& isQosSame
|
||||||
&& isQosSessionsSame
|
&& isQosBearerSessionsSame
|
||||||
&& Objects.equals(mSliceInfo, other.mSliceInfo);
|
&& Objects.equals(mSliceInfo, other.mSliceInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -480,7 +480,7 @@ public final class DataCallResponse implements Parcelable {
|
|||||||
return Objects.hash(mCause, mSuggestedRetryTime, mId, mLinkStatus, mProtocolType,
|
return Objects.hash(mCause, mSuggestedRetryTime, mId, mLinkStatus, mProtocolType,
|
||||||
mInterfaceName, mAddresses, mDnsAddresses, mGatewayAddresses, mPcscfAddresses,
|
mInterfaceName, mAddresses, mDnsAddresses, mGatewayAddresses, mPcscfAddresses,
|
||||||
mMtu, mMtuV4, mMtuV6, mHandoverFailureMode, mPduSessionId, mDefaultQos,
|
mMtu, mMtuV4, mMtuV6, mHandoverFailureMode, mPduSessionId, mDefaultQos,
|
||||||
mQosSessions, mSliceInfo);
|
mQosBearerSessions, mSliceInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -510,7 +510,7 @@ public final class DataCallResponse implements Parcelable {
|
|||||||
} else {
|
} else {
|
||||||
dest.writeParcelable((NrQos)mDefaultQos, flags);
|
dest.writeParcelable((NrQos)mDefaultQos, flags);
|
||||||
}
|
}
|
||||||
dest.writeList(mQosSessions);
|
dest.writeList(mQosBearerSessions);
|
||||||
dest.writeParcelable(mSliceInfo, flags);
|
dest.writeParcelable(mSliceInfo, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -593,7 +593,7 @@ public final class DataCallResponse implements Parcelable {
|
|||||||
|
|
||||||
private Qos mDefaultQos;
|
private Qos mDefaultQos;
|
||||||
|
|
||||||
private List<QosSession> mQosSessions = new ArrayList<>();
|
private List<QosBearerSession> mQosBearerSessions = new ArrayList<>();
|
||||||
|
|
||||||
private SliceInfo mSliceInfo;
|
private SliceInfo mSliceInfo;
|
||||||
|
|
||||||
@@ -807,15 +807,16 @@ public final class DataCallResponse implements Parcelable {
|
|||||||
/**
|
/**
|
||||||
* Set the dedicated bearer QOS sessions for this data connection.
|
* Set the dedicated bearer QOS sessions for this data connection.
|
||||||
*
|
*
|
||||||
* @param qosSessions Dedicated bearer QOS (Quality Of Service) sessions received
|
* @param qosBearerSessions Dedicated bearer QOS (Quality Of Service) sessions received
|
||||||
* from network.
|
* from network.
|
||||||
*
|
*
|
||||||
* @return The same instance of the builder.
|
* @return The same instance of the builder.
|
||||||
*
|
*
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public @NonNull Builder setQosSessions(@NonNull List<QosSession> qosSessions) {
|
public @NonNull Builder setQosBearerSessions(
|
||||||
mQosSessions = qosSessions;
|
@NonNull List<QosBearerSession> qosBearerSessions) {
|
||||||
|
mQosBearerSessions = qosBearerSessions;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -843,7 +844,7 @@ public final class DataCallResponse implements Parcelable {
|
|||||||
return new DataCallResponse(mCause, mSuggestedRetryTime, mId, mLinkStatus,
|
return new DataCallResponse(mCause, mSuggestedRetryTime, mId, mLinkStatus,
|
||||||
mProtocolType, mInterfaceName, mAddresses, mDnsAddresses, mGatewayAddresses,
|
mProtocolType, mInterfaceName, mAddresses, mDnsAddresses, mGatewayAddresses,
|
||||||
mPcscfAddresses, mMtu, mMtuV4, mMtuV6, mHandoverFailureMode, mPduSessionId,
|
mPcscfAddresses, mMtu, mMtuV4, mMtuV6, mHandoverFailureMode, mPduSessionId,
|
||||||
mDefaultQos, mQosSessions, mSliceInfo);
|
mDefaultQos, mQosBearerSessions, mSliceInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,6 +48,10 @@ public final class EpsQos extends Qos implements Parcelable {
|
|||||||
qosClassId = source.readInt();
|
qosClassId = source.readInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getQci() {
|
||||||
|
return qosClassId;
|
||||||
|
}
|
||||||
|
|
||||||
public static @NonNull EpsQos createFromParcelBody(@NonNull Parcel in) {
|
public static @NonNull EpsQos createFromParcelBody(@NonNull Parcel in) {
|
||||||
return new EpsQos(in);
|
return new EpsQos(in);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,7 +56,15 @@ public abstract class Qos {
|
|||||||
this.uplink = new QosBandwidth(uplink.maxBitrateKbps, uplink.guaranteedBitrateKbps);
|
this.uplink = new QosBandwidth(uplink.maxBitrateKbps, uplink.guaranteedBitrateKbps);
|
||||||
}
|
}
|
||||||
|
|
||||||
static class QosBandwidth implements Parcelable {
|
public QosBandwidth getDownlinkBandwidth() {
|
||||||
|
return downlink;
|
||||||
|
}
|
||||||
|
|
||||||
|
public QosBandwidth getUplinkBandwidth() {
|
||||||
|
return uplink;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class QosBandwidth implements Parcelable {
|
||||||
int maxBitrateKbps;
|
int maxBitrateKbps;
|
||||||
int guaranteedBitrateKbps;
|
int guaranteedBitrateKbps;
|
||||||
|
|
||||||
@@ -73,6 +81,14 @@ public abstract class Qos {
|
|||||||
guaranteedBitrateKbps = source.readInt();
|
guaranteedBitrateKbps = source.readInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getMaxBitrateKbps() {
|
||||||
|
return maxBitrateKbps;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getGuaranteedBitrateKbps() {
|
||||||
|
return guaranteedBitrateKbps;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeToParcel(Parcel dest, int flags) {
|
public void writeToParcel(Parcel dest, int flags) {
|
||||||
dest.writeInt(maxBitrateKbps);
|
dest.writeInt(maxBitrateKbps);
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ import java.util.Objects;
|
|||||||
*
|
*
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public final class QosFilter implements Parcelable {
|
public final class QosBearerFilter implements Parcelable {
|
||||||
|
|
||||||
private List<LinkAddress> localAddresses;
|
private List<LinkAddress> localAddresses;
|
||||||
private List<LinkAddress> remoteAddresses;
|
private List<LinkAddress> remoteAddresses;
|
||||||
@@ -74,7 +74,7 @@ public final class QosFilter implements Parcelable {
|
|||||||
@IntDef(prefix = "QOS_FILTER_DIRECTION_",
|
@IntDef(prefix = "QOS_FILTER_DIRECTION_",
|
||||||
value = {QOS_FILTER_DIRECTION_DOWNLINK, QOS_FILTER_DIRECTION_UPLINK,
|
value = {QOS_FILTER_DIRECTION_DOWNLINK, QOS_FILTER_DIRECTION_UPLINK,
|
||||||
QOS_FILTER_DIRECTION_BIDIRECTIONAL})
|
QOS_FILTER_DIRECTION_BIDIRECTIONAL})
|
||||||
public @interface QosFilterDirection {}
|
public @interface QosBearerFilterDirection {}
|
||||||
|
|
||||||
public static final int QOS_FILTER_DIRECTION_DOWNLINK =
|
public static final int QOS_FILTER_DIRECTION_DOWNLINK =
|
||||||
android.hardware.radio.V1_6.QosFilterDirection.DOWNLINK;
|
android.hardware.radio.V1_6.QosFilterDirection.DOWNLINK;
|
||||||
@@ -83,7 +83,7 @@ public final class QosFilter implements Parcelable {
|
|||||||
public static final int QOS_FILTER_DIRECTION_BIDIRECTIONAL =
|
public static final int QOS_FILTER_DIRECTION_BIDIRECTIONAL =
|
||||||
android.hardware.radio.V1_6.QosFilterDirection.BIDIRECTIONAL;
|
android.hardware.radio.V1_6.QosFilterDirection.BIDIRECTIONAL;
|
||||||
|
|
||||||
@QosFilterDirection
|
@QosBearerFilterDirection
|
||||||
private int filterDirection;
|
private int filterDirection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -92,7 +92,7 @@ public final class QosFilter implements Parcelable {
|
|||||||
*/
|
*/
|
||||||
private int precedence;
|
private int precedence;
|
||||||
|
|
||||||
QosFilter() {
|
QosBearerFilter() {
|
||||||
localAddresses = new ArrayList<>();
|
localAddresses = new ArrayList<>();
|
||||||
remoteAddresses = new ArrayList<>();
|
remoteAddresses = new ArrayList<>();
|
||||||
localPort = new PortRange();
|
localPort = new PortRange();
|
||||||
@@ -101,7 +101,7 @@ public final class QosFilter implements Parcelable {
|
|||||||
filterDirection = QOS_FILTER_DIRECTION_BIDIRECTIONAL;
|
filterDirection = QOS_FILTER_DIRECTION_BIDIRECTIONAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
public QosFilter(List<LinkAddress> localAddresses, List<LinkAddress> remoteAddresses,
|
public QosBearerFilter(List<LinkAddress> localAddresses, List<LinkAddress> remoteAddresses,
|
||||||
PortRange localPort, PortRange remotePort, int protocol, int tos,
|
PortRange localPort, PortRange remotePort, int protocol, int tos,
|
||||||
long flowLabel, long spi, int direction, int precedence) {
|
long flowLabel, long spi, int direction, int precedence) {
|
||||||
this.localAddresses = localAddresses;
|
this.localAddresses = localAddresses;
|
||||||
@@ -116,10 +116,30 @@ public final class QosFilter implements Parcelable {
|
|||||||
this.precedence = precedence;
|
this.precedence = precedence;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<LinkAddress> getLocalAddresses() {
|
||||||
|
return localAddresses;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<LinkAddress> getRemoteAddresses() {
|
||||||
|
return remoteAddresses;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PortRange getLocalPortRange() {
|
||||||
|
return localPort;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PortRange getRemotePortRange() {
|
||||||
|
return remotePort;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPrecedence() {
|
||||||
|
return precedence;
|
||||||
|
}
|
||||||
|
|
||||||
/** @hide */
|
/** @hide */
|
||||||
public static @NonNull QosFilter create(
|
public static @NonNull QosBearerFilter create(
|
||||||
@NonNull android.hardware.radio.V1_6.QosFilter qosFilter) {
|
@NonNull android.hardware.radio.V1_6.QosFilter qosFilter) {
|
||||||
QosFilter ret = new QosFilter();
|
QosBearerFilter ret = new QosBearerFilter();
|
||||||
|
|
||||||
String[] localAddresses = qosFilter.localAddresses.stream().toArray(String[]::new);
|
String[] localAddresses = qosFilter.localAddresses.stream().toArray(String[]::new);
|
||||||
if (localAddresses != null) {
|
if (localAddresses != null) {
|
||||||
@@ -202,6 +222,14 @@ public final class QosFilter implements Parcelable {
|
|||||||
this.end = end;
|
this.end = end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getStart() {
|
||||||
|
return start;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getEnd() {
|
||||||
|
return end;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeToParcel(@NonNull Parcel dest, int flags) {
|
public void writeToParcel(@NonNull Parcel dest, int flags) {
|
||||||
dest.writeInt(start);
|
dest.writeInt(start);
|
||||||
@@ -254,7 +282,7 @@ public final class QosFilter implements Parcelable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "QosFilter {"
|
return "QosBearerFilter {"
|
||||||
+ " localAddresses=" + localAddresses
|
+ " localAddresses=" + localAddresses
|
||||||
+ " remoteAddresses=" + remoteAddresses
|
+ " remoteAddresses=" + remoteAddresses
|
||||||
+ " localPort=" + localPort
|
+ " localPort=" + localPort
|
||||||
@@ -278,11 +306,11 @@ public final class QosFilter implements Parcelable {
|
|||||||
public boolean equals(Object o) {
|
public boolean equals(Object o) {
|
||||||
if (this == o) return true;
|
if (this == o) return true;
|
||||||
|
|
||||||
if (o == null || !(o instanceof QosFilter)) {
|
if (o == null || !(o instanceof QosBearerFilter)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
QosFilter other = (QosFilter) o;
|
QosBearerFilter other = (QosBearerFilter) o;
|
||||||
|
|
||||||
return localAddresses.size() == other.localAddresses.size()
|
return localAddresses.size() == other.localAddresses.size()
|
||||||
&& localAddresses.containsAll(other.localAddresses)
|
&& localAddresses.containsAll(other.localAddresses)
|
||||||
@@ -324,7 +352,7 @@ public final class QosFilter implements Parcelable {
|
|||||||
LinkAddress.LIFETIME_UNKNOWN, LinkAddress.LIFETIME_UNKNOWN);
|
LinkAddress.LIFETIME_UNKNOWN, LinkAddress.LIFETIME_UNKNOWN);
|
||||||
}
|
}
|
||||||
|
|
||||||
private QosFilter(Parcel source) {
|
private QosBearerFilter(Parcel source) {
|
||||||
localAddresses = new ArrayList<>();
|
localAddresses = new ArrayList<>();
|
||||||
source.readList(localAddresses, LinkAddress.class.getClassLoader());
|
source.readList(localAddresses, LinkAddress.class.getClassLoader());
|
||||||
remoteAddresses = new ArrayList<>();
|
remoteAddresses = new ArrayList<>();
|
||||||
@@ -358,16 +386,16 @@ public final class QosFilter implements Parcelable {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final @NonNull Parcelable.Creator<QosFilter> CREATOR =
|
public static final @NonNull Parcelable.Creator<QosBearerFilter> CREATOR =
|
||||||
new Parcelable.Creator<QosFilter>() {
|
new Parcelable.Creator<QosBearerFilter>() {
|
||||||
@Override
|
@Override
|
||||||
public QosFilter createFromParcel(Parcel source) {
|
public QosBearerFilter createFromParcel(Parcel source) {
|
||||||
return new QosFilter(source);
|
return new QosBearerFilter(source);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public QosFilter[] newArray(int size) {
|
public QosBearerFilter[] newArray(int size) {
|
||||||
return new QosFilter[size];
|
return new QosBearerFilter[size];
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
137
telephony/java/android/telephony/data/QosBearerSession.java
Normal file
137
telephony/java/android/telephony/data/QosBearerSession.java
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
/**
|
||||||
|
* 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 android.telephony.data;
|
||||||
|
|
||||||
|
import android.annotation.NonNull;
|
||||||
|
import android.os.Parcel;
|
||||||
|
import android.os.Parcelable;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class that stores information specific to QOS session.
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public final class QosBearerSession implements Parcelable{
|
||||||
|
|
||||||
|
final int qosBearerSessionId;
|
||||||
|
final Qos qos;
|
||||||
|
final List<QosBearerFilter> qosBearerFilterList;
|
||||||
|
|
||||||
|
public QosBearerSession(int qosBearerSessionId, @NonNull Qos qos, @NonNull List<QosBearerFilter> qosBearerFilterList) {
|
||||||
|
this.qosBearerSessionId = qosBearerSessionId;
|
||||||
|
this.qos = qos;
|
||||||
|
this.qosBearerFilterList = qosBearerFilterList;
|
||||||
|
}
|
||||||
|
|
||||||
|
private QosBearerSession(Parcel source) {
|
||||||
|
qosBearerSessionId = source.readInt();
|
||||||
|
qos = source.readParcelable(Qos.class.getClassLoader());
|
||||||
|
qosBearerFilterList = new ArrayList<>();
|
||||||
|
source.readList(qosBearerFilterList, QosBearerFilter.class.getClassLoader());
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getQosBearerSessionId() {
|
||||||
|
return qosBearerSessionId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Qos getQos() {
|
||||||
|
return qos;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<QosBearerFilter> getQosBearerFilterList() {
|
||||||
|
return qosBearerFilterList;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToParcel(@NonNull Parcel dest, int flags) {
|
||||||
|
dest.writeInt(qosBearerSessionId);
|
||||||
|
if (qos.getType() == Qos.QOS_TYPE_EPS) {
|
||||||
|
dest.writeParcelable((EpsQos)qos, flags);
|
||||||
|
} else {
|
||||||
|
dest.writeParcelable((NrQos)qos, flags);
|
||||||
|
}
|
||||||
|
dest.writeList(qosBearerFilterList);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static @NonNull QosBearerSession create(
|
||||||
|
@NonNull android.hardware.radio.V1_6.QosSession qosSession) {
|
||||||
|
List<QosBearerFilter> qosBearerFilters = new ArrayList<>();
|
||||||
|
|
||||||
|
if (qosSession.qosFilters != null) {
|
||||||
|
for (android.hardware.radio.V1_6.QosFilter filter : qosSession.qosFilters) {
|
||||||
|
qosBearerFilters.add(QosBearerFilter.create(filter));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new QosBearerSession(
|
||||||
|
qosSession.qosSessionId,
|
||||||
|
Qos.create(qosSession.qos),
|
||||||
|
qosBearerFilters);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int describeContents() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "QosBearerSession {"
|
||||||
|
+ " qosBearerSessionId=" + qosBearerSessionId
|
||||||
|
+ " qos=" + qos
|
||||||
|
+ " qosBearerFilterList=" + qosBearerFilterList + "}";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(qosBearerSessionId, qos, qosBearerFilterList);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o) return true;
|
||||||
|
|
||||||
|
if (o == null || !(o instanceof QosBearerSession)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
QosBearerSession other = (QosBearerSession) o;
|
||||||
|
return this.qosBearerSessionId == other.qosBearerSessionId
|
||||||
|
&& this.qos.equals(other.qos)
|
||||||
|
&& this.qosBearerFilterList.size() == other.qosBearerFilterList.size()
|
||||||
|
&& this.qosBearerFilterList.containsAll(other.qosBearerFilterList);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static final @NonNull Parcelable.Creator<QosBearerSession> CREATOR =
|
||||||
|
new Parcelable.Creator<QosBearerSession>() {
|
||||||
|
@Override
|
||||||
|
public QosBearerSession createFromParcel(Parcel source) {
|
||||||
|
return new QosBearerSession(source);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public QosBearerSession[] newArray(int size) {
|
||||||
|
return new QosBearerSession[size];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,125 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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 android.telephony.data;
|
|
||||||
|
|
||||||
import android.annotation.NonNull;
|
|
||||||
import android.os.Parcel;
|
|
||||||
import android.os.Parcelable;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class that stores information specific to QOS session.
|
|
||||||
*
|
|
||||||
* @hide
|
|
||||||
*/
|
|
||||||
public final class QosSession implements Parcelable{
|
|
||||||
|
|
||||||
final int qosSessionId;
|
|
||||||
final Qos qos;
|
|
||||||
final List<QosFilter> qosFilterList;
|
|
||||||
|
|
||||||
public QosSession(int qosSessionId, @NonNull Qos qos, @NonNull List<QosFilter> qosFilterList) {
|
|
||||||
this.qosSessionId = qosSessionId;
|
|
||||||
this.qos = qos;
|
|
||||||
this.qosFilterList = qosFilterList;
|
|
||||||
}
|
|
||||||
|
|
||||||
private QosSession(Parcel source) {
|
|
||||||
qosSessionId = source.readInt();
|
|
||||||
qos = source.readParcelable(Qos.class.getClassLoader());
|
|
||||||
qosFilterList = new ArrayList<>();
|
|
||||||
source.readList(qosFilterList, QosFilter.class.getClassLoader());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void writeToParcel(@NonNull Parcel dest, int flags) {
|
|
||||||
dest.writeInt(qosSessionId);
|
|
||||||
if (qos.getType() == Qos.QOS_TYPE_EPS) {
|
|
||||||
dest.writeParcelable((EpsQos)qos, flags);
|
|
||||||
} else {
|
|
||||||
dest.writeParcelable((NrQos)qos, flags);
|
|
||||||
}
|
|
||||||
dest.writeList(qosFilterList);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static @NonNull QosSession create(
|
|
||||||
@NonNull android.hardware.radio.V1_6.QosSession qosSession) {
|
|
||||||
List<QosFilter> qosFilters = new ArrayList<>();
|
|
||||||
|
|
||||||
if (qosSession.qosFilters != null) {
|
|
||||||
for (android.hardware.radio.V1_6.QosFilter filter : qosSession.qosFilters) {
|
|
||||||
qosFilters.add(QosFilter.create(filter));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return new QosSession(
|
|
||||||
qosSession.qosSessionId,
|
|
||||||
Qos.create(qosSession.qos),
|
|
||||||
qosFilters);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int describeContents() {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "QosSession {"
|
|
||||||
+ " qosSessionId=" + qosSessionId
|
|
||||||
+ " qos=" + qos
|
|
||||||
+ " qosFilterList=" + qosFilterList + "}";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
return Objects.hash(qosSessionId, qos, qosFilterList);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object o) {
|
|
||||||
if (this == o) return true;
|
|
||||||
|
|
||||||
if (o == null || !(o instanceof QosSession)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
QosSession other = (QosSession) o;
|
|
||||||
return this.qosSessionId == other.qosSessionId
|
|
||||||
&& this.qos.equals(other.qos)
|
|
||||||
&& this.qosFilterList.size() == other.qosFilterList.size()
|
|
||||||
&& this.qosFilterList.containsAll(other.qosFilterList);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static final @NonNull Parcelable.Creator<QosSession> CREATOR =
|
|
||||||
new Parcelable.Creator<QosSession>() {
|
|
||||||
@Override
|
|
||||||
public QosSession createFromParcel(Parcel source) {
|
|
||||||
return new QosSession(source);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public QosSession[] newArray(int size) {
|
|
||||||
return new QosSession[size];
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user