Merge "Add QoS filter matching and unit tests"
This commit is contained in:
@@ -136,7 +136,7 @@ public final class DataCallResponse implements Parcelable {
|
||||
private final @HandoverFailureMode int mHandoverFailureMode;
|
||||
private final int mPduSessionId;
|
||||
private final Qos mDefaultQos;
|
||||
private final List<QosSession> mQosSessions;
|
||||
private final List<QosBearerSession> mQosBearerSessions;
|
||||
private final SliceInfo mSliceInfo;
|
||||
|
||||
/**
|
||||
@@ -187,7 +187,7 @@ public final class DataCallResponse implements Parcelable {
|
||||
mHandoverFailureMode = HANDOVER_FAILURE_MODE_LEGACY;
|
||||
mPduSessionId = PDU_SESSION_ID_NOT_SET;
|
||||
mDefaultQos = null;
|
||||
mQosSessions = new ArrayList<>();
|
||||
mQosBearerSessions = new ArrayList<>();
|
||||
mSliceInfo = null;
|
||||
}
|
||||
|
||||
@@ -197,7 +197,7 @@ public final class DataCallResponse implements Parcelable {
|
||||
@Nullable List<InetAddress> dnsAddresses, @Nullable List<InetAddress> gatewayAddresses,
|
||||
@Nullable List<InetAddress> pcscfAddresses, int mtu, int mtuV4, int mtuV6,
|
||||
@HandoverFailureMode int handoverFailureMode, int pduSessionId,
|
||||
@Nullable Qos defaultQos, @Nullable List<QosSession> qosSessions,
|
||||
@Nullable Qos defaultQos, @Nullable List<QosBearerSession> qosBearerSessions,
|
||||
@Nullable SliceInfo sliceInfo) {
|
||||
mCause = cause;
|
||||
mSuggestedRetryTime = suggestedRetryTime;
|
||||
@@ -219,7 +219,7 @@ public final class DataCallResponse implements Parcelable {
|
||||
mHandoverFailureMode = handoverFailureMode;
|
||||
mPduSessionId = pduSessionId;
|
||||
mDefaultQos = defaultQos;
|
||||
mQosSessions = qosSessions;
|
||||
mQosBearerSessions = qosBearerSessions;
|
||||
mSliceInfo = sliceInfo;
|
||||
}
|
||||
|
||||
@@ -246,8 +246,8 @@ public final class DataCallResponse implements Parcelable {
|
||||
mHandoverFailureMode = source.readInt();
|
||||
mPduSessionId = source.readInt();
|
||||
mDefaultQos = source.readParcelable(Qos.class.getClassLoader());
|
||||
mQosSessions = new ArrayList<>();
|
||||
source.readList(mQosSessions, QosSession.class.getClassLoader());
|
||||
mQosBearerSessions = new ArrayList<>();
|
||||
source.readList(mQosBearerSessions, QosBearerSession.class.getClassLoader());
|
||||
mSliceInfo = source.readParcelable(SliceInfo.class.getClassLoader());
|
||||
}
|
||||
|
||||
@@ -393,8 +393,8 @@ public final class DataCallResponse implements Parcelable {
|
||||
* @hide
|
||||
*/
|
||||
@NonNull
|
||||
public List<QosSession> getQosSessions() {
|
||||
return mQosSessions;
|
||||
public List<QosBearerSession> getQosBearerSessions() {
|
||||
return mQosBearerSessions;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -426,7 +426,7 @@ public final class DataCallResponse implements Parcelable {
|
||||
.append(" handoverFailureMode=").append(getHandoverFailureMode())
|
||||
.append(" pduSessionId=").append(getPduSessionId())
|
||||
.append(" defaultQos=").append(mDefaultQos)
|
||||
.append(" qosSessions=").append(mQosSessions)
|
||||
.append(" qosBearerSessions=").append(mQosBearerSessions)
|
||||
.append(" sliceInfo=").append(mSliceInfo)
|
||||
.append("}");
|
||||
return sb.toString();
|
||||
@@ -446,10 +446,10 @@ public final class DataCallResponse implements Parcelable {
|
||||
mDefaultQos == other.mDefaultQos :
|
||||
mDefaultQos.equals(other.mDefaultQos);
|
||||
|
||||
final boolean isQosSessionsSame = (mQosSessions == null || mQosSessions == null) ?
|
||||
mQosSessions == other.mQosSessions :
|
||||
mQosSessions.size() == other.mQosSessions.size()
|
||||
&& mQosSessions.containsAll(other.mQosSessions);
|
||||
final boolean isQosBearerSessionsSame = (mQosBearerSessions == null || mQosBearerSessions == null) ?
|
||||
mQosBearerSessions == other.mQosBearerSessions :
|
||||
mQosBearerSessions.size() == other.mQosBearerSessions.size()
|
||||
&& mQosBearerSessions.containsAll(other.mQosBearerSessions);
|
||||
|
||||
return mCause == other.mCause
|
||||
&& mSuggestedRetryTime == other.mSuggestedRetryTime
|
||||
@@ -471,7 +471,7 @@ public final class DataCallResponse implements Parcelable {
|
||||
&& mHandoverFailureMode == other.mHandoverFailureMode
|
||||
&& mPduSessionId == other.mPduSessionId
|
||||
&& isQosSame
|
||||
&& isQosSessionsSame
|
||||
&& isQosBearerSessionsSame
|
||||
&& Objects.equals(mSliceInfo, other.mSliceInfo);
|
||||
}
|
||||
|
||||
@@ -480,7 +480,7 @@ public final class DataCallResponse implements Parcelable {
|
||||
return Objects.hash(mCause, mSuggestedRetryTime, mId, mLinkStatus, mProtocolType,
|
||||
mInterfaceName, mAddresses, mDnsAddresses, mGatewayAddresses, mPcscfAddresses,
|
||||
mMtu, mMtuV4, mMtuV6, mHandoverFailureMode, mPduSessionId, mDefaultQos,
|
||||
mQosSessions, mSliceInfo);
|
||||
mQosBearerSessions, mSliceInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -510,7 +510,7 @@ public final class DataCallResponse implements Parcelable {
|
||||
} else {
|
||||
dest.writeParcelable((NrQos)mDefaultQos, flags);
|
||||
}
|
||||
dest.writeList(mQosSessions);
|
||||
dest.writeList(mQosBearerSessions);
|
||||
dest.writeParcelable(mSliceInfo, flags);
|
||||
}
|
||||
|
||||
@@ -593,7 +593,7 @@ public final class DataCallResponse implements Parcelable {
|
||||
|
||||
private Qos mDefaultQos;
|
||||
|
||||
private List<QosSession> mQosSessions = new ArrayList<>();
|
||||
private List<QosBearerSession> mQosBearerSessions = new ArrayList<>();
|
||||
|
||||
private SliceInfo mSliceInfo;
|
||||
|
||||
@@ -807,15 +807,16 @@ public final class DataCallResponse implements Parcelable {
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
* @return The same instance of the builder.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public @NonNull Builder setQosSessions(@NonNull List<QosSession> qosSessions) {
|
||||
mQosSessions = qosSessions;
|
||||
public @NonNull Builder setQosBearerSessions(
|
||||
@NonNull List<QosBearerSession> qosBearerSessions) {
|
||||
mQosBearerSessions = qosBearerSessions;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -843,7 +844,7 @@ public final class DataCallResponse implements Parcelable {
|
||||
return new DataCallResponse(mCause, mSuggestedRetryTime, mId, mLinkStatus,
|
||||
mProtocolType, mInterfaceName, mAddresses, mDnsAddresses, mGatewayAddresses,
|
||||
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();
|
||||
}
|
||||
|
||||
public int getQci() {
|
||||
return qosClassId;
|
||||
}
|
||||
|
||||
public static @NonNull EpsQos createFromParcelBody(@NonNull Parcel in) {
|
||||
return new EpsQos(in);
|
||||
}
|
||||
|
||||
@@ -56,7 +56,15 @@ public abstract class Qos {
|
||||
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 guaranteedBitrateKbps;
|
||||
|
||||
@@ -73,6 +81,14 @@ public abstract class Qos {
|
||||
guaranteedBitrateKbps = source.readInt();
|
||||
}
|
||||
|
||||
public int getMaxBitrateKbps() {
|
||||
return maxBitrateKbps;
|
||||
}
|
||||
|
||||
public int getGuaranteedBitrateKbps() {
|
||||
return guaranteedBitrateKbps;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
dest.writeInt(maxBitrateKbps);
|
||||
|
||||
@@ -38,7 +38,7 @@ import java.util.Objects;
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public final class QosFilter implements Parcelable {
|
||||
public final class QosBearerFilter implements Parcelable {
|
||||
|
||||
private List<LinkAddress> localAddresses;
|
||||
private List<LinkAddress> remoteAddresses;
|
||||
@@ -74,7 +74,7 @@ public final class QosFilter implements Parcelable {
|
||||
@IntDef(prefix = "QOS_FILTER_DIRECTION_",
|
||||
value = {QOS_FILTER_DIRECTION_DOWNLINK, QOS_FILTER_DIRECTION_UPLINK,
|
||||
QOS_FILTER_DIRECTION_BIDIRECTIONAL})
|
||||
public @interface QosFilterDirection {}
|
||||
public @interface QosBearerFilterDirection {}
|
||||
|
||||
public static final int QOS_FILTER_DIRECTION_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 =
|
||||
android.hardware.radio.V1_6.QosFilterDirection.BIDIRECTIONAL;
|
||||
|
||||
@QosFilterDirection
|
||||
@QosBearerFilterDirection
|
||||
private int filterDirection;
|
||||
|
||||
/**
|
||||
@@ -92,7 +92,7 @@ public final class QosFilter implements Parcelable {
|
||||
*/
|
||||
private int precedence;
|
||||
|
||||
QosFilter() {
|
||||
QosBearerFilter() {
|
||||
localAddresses = new ArrayList<>();
|
||||
remoteAddresses = new ArrayList<>();
|
||||
localPort = new PortRange();
|
||||
@@ -101,7 +101,7 @@ public final class QosFilter implements Parcelable {
|
||||
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,
|
||||
long flowLabel, long spi, int direction, int precedence) {
|
||||
this.localAddresses = localAddresses;
|
||||
@@ -116,10 +116,30 @@ public final class QosFilter implements Parcelable {
|
||||
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 */
|
||||
public static @NonNull QosFilter create(
|
||||
public static @NonNull QosBearerFilter create(
|
||||
@NonNull android.hardware.radio.V1_6.QosFilter qosFilter) {
|
||||
QosFilter ret = new QosFilter();
|
||||
QosBearerFilter ret = new QosBearerFilter();
|
||||
|
||||
String[] localAddresses = qosFilter.localAddresses.stream().toArray(String[]::new);
|
||||
if (localAddresses != null) {
|
||||
@@ -202,6 +222,14 @@ public final class QosFilter implements Parcelable {
|
||||
this.end = end;
|
||||
}
|
||||
|
||||
public int getStart() {
|
||||
return start;
|
||||
}
|
||||
|
||||
public int getEnd() {
|
||||
return end;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(@NonNull Parcel dest, int flags) {
|
||||
dest.writeInt(start);
|
||||
@@ -254,7 +282,7 @@ public final class QosFilter implements Parcelable {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "QosFilter {"
|
||||
return "QosBearerFilter {"
|
||||
+ " localAddresses=" + localAddresses
|
||||
+ " remoteAddresses=" + remoteAddresses
|
||||
+ " localPort=" + localPort
|
||||
@@ -278,11 +306,11 @@ public final class QosFilter implements Parcelable {
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
|
||||
if (o == null || !(o instanceof QosFilter)) {
|
||||
if (o == null || !(o instanceof QosBearerFilter)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
QosFilter other = (QosFilter) o;
|
||||
QosBearerFilter other = (QosBearerFilter) o;
|
||||
|
||||
return localAddresses.size() == other.localAddresses.size()
|
||||
&& localAddresses.containsAll(other.localAddresses)
|
||||
@@ -324,7 +352,7 @@ public final class QosFilter implements Parcelable {
|
||||
LinkAddress.LIFETIME_UNKNOWN, LinkAddress.LIFETIME_UNKNOWN);
|
||||
}
|
||||
|
||||
private QosFilter(Parcel source) {
|
||||
private QosBearerFilter(Parcel source) {
|
||||
localAddresses = new ArrayList<>();
|
||||
source.readList(localAddresses, LinkAddress.class.getClassLoader());
|
||||
remoteAddresses = new ArrayList<>();
|
||||
@@ -358,16 +386,16 @@ public final class QosFilter implements Parcelable {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static final @NonNull Parcelable.Creator<QosFilter> CREATOR =
|
||||
new Parcelable.Creator<QosFilter>() {
|
||||
public static final @NonNull Parcelable.Creator<QosBearerFilter> CREATOR =
|
||||
new Parcelable.Creator<QosBearerFilter>() {
|
||||
@Override
|
||||
public QosFilter createFromParcel(Parcel source) {
|
||||
return new QosFilter(source);
|
||||
public QosBearerFilter createFromParcel(Parcel source) {
|
||||
return new QosBearerFilter(source);
|
||||
}
|
||||
|
||||
@Override
|
||||
public QosFilter[] newArray(int size) {
|
||||
return new QosFilter[size];
|
||||
public QosBearerFilter[] newArray(int 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