113 lines
3.1 KiB
Plaintext
113 lines
3.1 KiB
Plaintext
// Automatically generated by script, do NOT modify by hand
|
|
|
|
package com.apple.cie.foundationdb.hubble;
|
|
|
|
import java.nio.ByteBuffer;
|
|
import java.nio.ByteOrder;
|
|
import java.util.Arrays;
|
|
import java.util.List;
|
|
|
|
class ProtocolVersion implements Comparable<ProtocolVersion> {
|
|
|
|
public static final ProtocolVersion protocolVersionSixThree =
|
|
new ProtocolVersion(0x0FDB00B063010001L);
|
|
public static final ProtocolVersion protocolVersionSixOne =
|
|
new ProtocolVersion(0x0FDB00B061060001L);
|
|
public static final ProtocolVersion protocolVersionSixTwo =
|
|
new ProtocolVersion(0x0FDB00B062010001L);
|
|
public static final ProtocolVersion protocolVersionSixZero =
|
|
new ProtocolVersion(0x0FDB00A570010001L);
|
|
public static final ProtocolVersion protocolVersionSevenZero =
|
|
new ProtocolVersion(0x0FDB00B070010000L);
|
|
public static final ProtocolVersion protocolVersionSevenOne =
|
|
new ProtocolVersion(0x0FDB00B071010000L);
|
|
public static final ProtocolVersion protocolVersionSevenThree =
|
|
new ProtocolVersion(0x0FDB00B073000000L);
|
|
|
|
public static final List<ProtocolVersion> supportedVersions = Arrays.asList(
|
|
protocolVersionSixThree,
|
|
protocolVersionSixTwo,
|
|
protocolVersionSixOne,
|
|
protocolVersionSixZero,
|
|
protocolVersionSevenZero,
|
|
protocolVersionSevenOne,
|
|
protocolVersionSevenThree);
|
|
|
|
private static final long compatibleProtocolVersionMask = 0xFFFFFFFFFFFF0000L;
|
|
private final long protocolVersion;
|
|
|
|
public ProtocolVersion(long version) {
|
|
protocolVersion = version;
|
|
}
|
|
|
|
public ProtocolVersion(Long version) {
|
|
protocolVersion = version.longValue();
|
|
}
|
|
|
|
public static ProtocolVersion deserialize(ByteBuffer byteBuffer) {
|
|
assert byteBuffer.order() == ByteOrder.LITTLE_ENDIAN;
|
|
final long version = byteBuffer.getLong();
|
|
ProtocolVersion protocolVersion = new ProtocolVersion(version);
|
|
return protocolVersion;
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object ob) {
|
|
if (!(ob instanceof ProtocolVersion)) {
|
|
return false;
|
|
}
|
|
return compareTo((ProtocolVersion) ob) == 0;
|
|
}
|
|
|
|
public boolean isSupported() {
|
|
return supportedVersions.contains(this);
|
|
}
|
|
|
|
public ProtocolVersion normalizedVersion() {
|
|
return new ProtocolVersion(
|
|
this.protocolVersion & ProtocolVersion.compatibleProtocolVersionMask);
|
|
}
|
|
|
|
public boolean isCompatible(ProtocolVersion other) {
|
|
return this.normalizedVersion().equals(other.normalizedVersion());
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return String.valueOf(protocolVersion);
|
|
}
|
|
|
|
public long getProtocolVersion() {
|
|
return protocolVersion;
|
|
}
|
|
|
|
@Override
|
|
public int compareTo(ProtocolVersion o) {
|
|
if (protocolVersion < o.protocolVersion) {
|
|
return -1;
|
|
} else if (protocolVersion > o.protocolVersion) {
|
|
return +1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
{% for version, features in all_features.items() %}
|
|
{% for feature in features %}
|
|
|
|
{% set feature_name = feature | feature_name_transformer %}
|
|
{% set encoded_version = version | encode_version %}
|
|
|
|
public boolean has{{feature_name}}() {
|
|
return protocolVersion >= {{encoded_version}};
|
|
}
|
|
|
|
public static ProtocolVersion with{{feature_name}}() {
|
|
return new ProtocolVersion({{encoded_version}});
|
|
}
|
|
{% endfor %}
|
|
{% endfor %}
|
|
|
|
}
|
|
|