"""传输层工厂"""
import logging
from .base import BaseTransport
from .http_transport import HTTPTransport
from .grpc_transport import GRPCTransport
from ..client.config import LogConfig

logger = logging.getLogger(__name__)


class TransportFactory:
    """传输层工厂
    
    根据配置创建相应的传输层实例
    """
    
    @staticmethod
    def create(config: LogConfig) -> BaseTransport:
        """创建传输层实例
        
        Args:
            config: 日志配置
            
        Returns:
            传输层实例
            
        Raises:
            ValueError: 不支持的传输协议
        """
        transport_type = config.transport.lower()
        
        if transport_type == "http":
            return HTTPTransport(config)
        elif transport_type == "grpc":
            try:
                return GRPCTransport(config)
            except ImportError:
                logger.warning("gRPC 不可用，降级使用 HTTP")
                return HTTPTransport(config)
        else:
            raise ValueError(f"不支持的传输协议: {transport_type}")
