package com.digitalpetri.enip.commands;
import io.netty.buffer.ByteBuf;
public final class RegisterSession extends Command {
public static final int DEFAULT_PROTOCOL_VERSION = 1;
public static final int DEFAULT_OPTION_FLAGS = 0;
private final int protocolVersion;
private final int optionFlags;
public RegisterSession() {
this(DEFAULT_PROTOCOL_VERSION, DEFAULT_OPTION_FLAGS);
}
public RegisterSession(int protocolVersion, int optionFlags) {
super(CommandCode.RegisterSession);
this.protocolVersion = protocolVersion;
this.optionFlags = optionFlags;
}
public int getProtocolVersion() {
return protocolVersion;
}
public int getOptionFlags() {
return optionFlags;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
RegisterSession that = (RegisterSession) o;
return optionFlags == that.optionFlags && protocolVersion == that.protocolVersion;
}
@Override
public int hashCode() {
int result = protocolVersion;
result = 31 * result + optionFlags;
return result;
}
public static ByteBuf encode(RegisterSession command, ByteBuf buffer) {
buffer.writeShort(command.getProtocolVersion());
buffer.writeShort(command.getOptionFlags());
return buffer;
}
public static RegisterSession decode(ByteBuf buffer) {
return new RegisterSession(
buffer.readUnsignedShort(),
buffer.readUnsignedShort()
);
}
}