package edu.uw.zookeeper.protocol;
import io.netty.buffer.ByteBuf;
import com.google.common.base.Objects;
import com.google.common.base.Optional;
public final class IntHeader implements Encodable {
public static IntHeader of(int intValue) {
return new IntHeader(intValue);
}
public static Optional<IntHeader> decode(ByteBuf input) {
if (input.readableBytes() >= LENGTH) {
int value = input.readInt();
return Optional.of(IntHeader.of(value));
} else {
return Optional.absent();
}
}
private static final int LENGTH = 4;
public static int length() {
return LENGTH;
}
private final int intValue;
public IntHeader(int intValue) {
this.intValue = intValue;
}
public int intValue() {
return intValue;
}
@Override
public void encode(ByteBuf output) {
output.writeInt(intValue);
}
@Override
public String toString() {
return String.format("0x%08x", intValue);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (! (obj instanceof IntHeader)) {
return false;
}
IntHeader other = (IntHeader) obj;
return Objects.equal(intValue, other.intValue);
}
@Override
public int hashCode() {
return intValue;
}
}