package com.alibaba.doris.client.net.command; import com.alibaba.doris.client.net.command.result.CheckResult; import com.alibaba.doris.client.net.protocol.ProtocolParser; import com.alibaba.doris.client.net.protocol.text.CheckProtocolParser; import com.alibaba.doris.common.data.util.ByteUtils; /** * @author ajun Email:jack.yuj@alibaba-inc.com */ public class CheckCommand extends BaseCommand<CheckResult> { public CheckCommand(Type checkType) { this.checkType = checkType; } public Type getType() { return checkType; } public ProtocolParser getProtocolParser() { return parser; } public CheckResult getResult() { return new CheckResult() { public String getMessage() { return CheckCommand.this.getErrorMessage(); } public boolean isSuccess() { return CheckCommand.this.isSuccess(); } }; } @Override public String toString() { StringBuilder sb = new StringBuilder(64); sb.append("CHECK"); sb.append("{"); sb.append("[status="); sb.append(this.isSuccess()); sb.append("]"); String message = this.getErrorMessage(); if (null != message) { sb.append("[message="); sb.append(message); sb.append("]"); } sb.append("}"); return sb.toString(); } private Type checkType; private static final ProtocolParser parser = new CheckProtocolParser(); /** * 标识当前要Check的对象类型 目前有两种类型:CHECK_TEMP_NODE;CHECK_NORMAL_NODE * * @see CheckType * @author ajun */ public interface Type { /** * 获取check对象类型数据,字符串格式返回; * * @return */ byte[] getType(); } /** * 检查临时节点: CHECK_STANDBY_NODE("check_standby_node")<br> * 检查临时节点: CHECK_TEMP_NODE("check_temp_node")<br> * 检查正常节点: CHECK_NORMAL_NODE("check_normal_node"); * * @author ajun */ public enum CheckType implements Type { /** * 检查临时节点 */ CHECK_STANDBY_NODE("check_standby_node"), /** * 检查临时节点 */ CHECK_TEMP_NODE("check_temp_node"), /** * 检查正常节点; */ CHECK_NORMAL_NODE("check_normal_node"); private CheckType(String type) { this.type = ByteUtils.stringToByte(type); } public byte[] getType() { return type; } private byte[] type; } }