package com.lingniu.ingest.api.pipeline;

import com.lingniu.ingest.api.event.VehicleEvent;

/**
 * 拦截器 SPI。内置实现：Auth / Dedup / RateLimit / CoordTransform / Tracing。
 * 实现 {@link org.springframework.core.Ordered}（或使用 {@code @Order}）控制顺序。
 */
public interface IngestInterceptor {

    /** 解码后、分发到 Handler 之前触发。返回 false 表示终止后续处理。 */
    default boolean before(RawFrame frame, IngestContext ctx) {
        return true;
    }

    /** Handler 成功产出事件后触发，允许修饰事件或取消投递。 */
    default void after(VehicleEvent event, IngestContext ctx) {}

    /** 处理链任一环节抛出异常时触发。 */
    default void onError(Throwable error, IngestContext ctx) {}
}
