foundationdb/flow/protocolversion/ProtocolVersion.java.template

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 %}
}