package com.easyagents.federation.sql.execute;

import java.sql.Statement;

/**
 * Adapter 用于登记和清理可取消 Statement 的回调。
 */
public interface StatementLifecycle {

    /**
     * 登记正在执行的 Statement。
     *
     * @param statement JDBC Statement
     */
    void register(Statement statement);

    /**
     * 清除已结束的 Statement。
     *
     * @param statement JDBC Statement
     */
    void unregister(Statement statement);

    /**
     * 返回当前查询是否已收到主动取消请求。
     *
     * @return 是否已请求取消
     */
    default boolean cancellationRequested() {
        return false;
    }

    /**
     * 返回当前查询是否已经超过统一执行时限。
     *
     * @return 是否已超时
     */
    default boolean timeoutRequested() {
        return false;
    }
}
