package storage // EngineOptions 引擎构造选项:由 main.go(API 层任务)从 config KV 填充。 // 各引擎的 RegisterEngine 工厂读取本结构;零值即安全默认。 type EngineOptions struct { // Local 本地引擎选项。 Local LocalOptions // S3 S3 引擎选项。 S3 S3Options // WebDAV WebDAV 引擎选项。 WebDAV WebDAVOptions } // LocalOptions 本地引擎配置(对齐 local_storage_path)。 type LocalOptions struct { // Root 存储根目录;空则使用系统临时目录。 Root string } // S3Options S3 引擎配置(对齐 s3_* 配置键)。 type S3Options struct { AccessKeyID string // s3_access_key_id SecretAccessKey string // s3_secret_access_key SessionToken string // aws_session_token Bucket string // s3_bucket_name Endpoint string // s3_endpoint_url(MinIO 等;空则 AWS 默认端点) Region string // s3_region_name,默认 auto AddressingStyle string // s3_addressing_style: auto|path|virtual } // WebDAVOptions WebDAV 引擎配置(对齐 webdav_* 配置键 + 本次优化项)。 type WebDAVOptions struct { // BaseURL 服务地址,如 https://dav.example.com/dav/。 BaseURL string // Username/Password 凭据(Basic 与 Digest 共用)。 Username string Password string // RootPath 远端根目录(webdav_root_path),会自动逐级创建。 RootPath string // MaxRetries 5xx/网络错误最大重试次数(指数退避),0 取默认 3。 MaxRetries int // BaseBackoff 重试基础退避时长,0 取默认 200ms。 BaseBackoff int64 // Timeout 单请求超时秒数,0 取默认 30s。 Timeout int64 // MaxIdleConnsPerHost 连接池每主机最大空闲连接,0 取默认 16(连接复用优化)。 MaxIdleConnsPerHost int } // engineOptions 全局引擎选项(由 main.go 注入;默认零值)。 var engineOptions EngineOptions // SetEngineOptions 注入引擎构造选项(在 RegisterEngine 工厂执行前调用)。 func SetEngineOptions(opts EngineOptions) { engineOptions = opts } // applyDefaults 填充零值默认项。 func (o *WebDAVOptions) applyDefaults() { if o.MaxRetries <= 0 { o.MaxRetries = 3 } if o.BaseBackoff <= 0 { o.BaseBackoff = 200 } if o.Timeout <= 0 { o.Timeout = 30 } if o.MaxIdleConnsPerHost <= 0 { o.MaxIdleConnsPerHost = 16 } }