package transport

// ProtocolPlugin 协议插件接口
// relay.go 通过这个接口适配不同协议，不感知具体协议细节
type ProtocolPlugin interface {
	// IsControlPacket 判断是否为控制包
	// 控制包用于建连协商，需要透传到对端
	IsControlPacket(packet []byte) bool

	// IsDataPacket 判断是否为数据包
	// 数据包包含路由标识，需要查表转发
	IsDataPacket(packet []byte) bool

	// ExtractRouteID 从数据包中提取路由标识
	// 返回的 route_id 用于查找对应的本地端口
	ExtractRouteID(packet []byte) (uint32, error)
}
