package quant.rich.emoney.annotation;

import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

/**
 * 注解在方法上以获取对 Emoney Protocol 的额外操作
 * <p>
 * 目前方法必须是受 spring 管理类下的公共成员方法，且接受参数为单参数 JsonNode.
 * <p>
 * 例：
 * {@code StrategyAndPoolService#updateByQueryResponse(JsonNode)}
 * @see quant.rich.emoney.service.RequestResponseInspectService
 */
@Documented
@Retention(RUNTIME)
@Target(METHOD)
public @interface ResponseDecodeExtension {
    /**
     * @return 指定的 protocolId
     */
    String protocolId();
    /**
     * @return inspect 的排序
     */
    int order() default -1;
    /**
     * @return 是否在模拟客户端请求和返回时启用, 默认 true
     */
    boolean client() default true;
}
