package com.lingniu.ingest.protocol.gb32960.codec.profile;

import com.lingniu.ingest.protocol.gb32960.codec.Gb32960ParserContext;

/**
 * 给定上下文返回应用的 vendor 扩展套件名（{@code null} 表示走默认 profile）。
 *
 * <p>实现需要线程安全且 O(1) 期望复杂度（建议内部缓存）。
 * 命中结果会直接影响 0x30+ 等厂商字段是否解析成结构化字段，还是退化为 Raw。
 */
public interface VendorExtensionSelector {

    /**
     * @return 命中的扩展套件名（与 {@code Gb32960ProfileRegistry} 注册名一致），
     *         未命中返回 {@code null}。
     */
    String select(Gb32960ParserContext ctx);

    /** 永远返回 null 的实现，用于不启用任何 vendor 扩展的默认场景。 */
    VendorExtensionSelector NONE = ctx -> null;
}
