package com.lingniu.ingest.api.annotation;

import com.lingniu.ingest.api.ProtocolId;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 标记一个类为协议 Handler Bean，由 {@code AnnotationHandlerProcessor} 自动扫描注册。
 *
 * <p>典型用法：
 * <pre>{@code
 * @ProtocolHandler(protocol = ProtocolId.GB32960)
 * public class Gb32960RealtimeHandler {
 *     @MessageMapping(command = 0x02)
 *     public VehicleEvent.Realtime handle(Gb32960Message msg) { ... }
 * }
 * }</pre>
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface ProtocolHandler {

    ProtocolId protocol();

    /** 可选：子协议版本（如 32960 的 2011 / 2017）。 */
    String version() default "";
}
