/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
package software.amazon.awssdk.crt.mqtt5;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* MQTT message delivery quality of service.
*
* Enum values match MQTT5 spec encoding values.
*/
public enum QOS {
/**
* The message is delivered according to the capabilities of the underlying network. No response is sent by the
* receiver and no retry is performed by the sender. The message arrives at the receiver either once or not at all.
*/
AT_MOST_ONCE(0),
/**
* A level of service that ensures that the message arrives at the receiver at least once.
*/
AT_LEAST_ONCE(1),
/**
* A level of service that ensures that the message arrives at the receiver exactly once.
*/
EXACTLY_ONCE(2);
private int qos;
private QOS(int value) {
qos = value;
}
/**
* @return The native enum integer value associated with this Java enum value
*/
public int getValue() {
return qos;
}
/**
* Creates a Java QualityOfService enum value from a native integer value.
*
* @param value native integer value for quality of service
* @return a new QualityOfService value
*/
public static QOS getEnumValueFromInteger(int value) {
QOS enumValue = enumMapping.get(value);
if (enumValue != null) {
return enumValue;
}
throw new RuntimeException("Illegal QOS");
}
private static Map buildEnumMapping() {
return Stream.of(QOS.values())
.collect(Collectors.toMap(QOS::getValue, Function.identity()));
}
private static Map enumMapping = buildEnumMapping();
}