package com.alibaba.doris.client.net.command; import java.util.concurrent.Semaphore; import com.alibaba.doris.client.net.OperationFuture; import com.alibaba.doris.client.net.OperationFutureImpl; /** * @author ajun Email:jack.yuj@alibaba-inc.com */ public abstract class BaseCommand<V> implements Command<V> { public int getNamespace() { return namespace; } public void setNamespace(int namespace) { this.namespace = namespace; } public int getRouteVersion() { return routeVersion; } public void setRouteVersion(int routeVersion) { this.routeVersion = routeVersion; } public boolean isSuccess() { return isSuccess; } public void setSuccess(boolean isSuccess) { this.isSuccess = isSuccess; } public String getErrorMessage() { return errorMessage; } public void complete() { signal.release(); } public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; } public OperationFuture<V> getResultFuture() { if (null == future) { future = new OperationFutureImpl<V>(this, signal); } return future; } public ErrorType getErrorType() { return errorType; } public void setErrorType(ErrorType errorType) { this.errorType = errorType; } private OperationFuture<V> future; private boolean isSuccess = false; private String errorMessage; private ErrorType errorType; protected Semaphore signal = new Semaphore(0); private int namespace; private int routeVersion; }