package common import ( "context" ) // TargetInfo 包装HostInfo,提供更丰富的功能 type TargetInfo struct { *HostInfo // 嵌入HostInfo,保持向后兼容 context context.Context metadata map[string]interface{} } // NewTargetInfo 创建新的目标信息 func NewTargetInfo(hostInfo HostInfo) *TargetInfo { return &TargetInfo{ HostInfo: &hostInfo, context: context.Background(), metadata: make(map[string]interface{}), } } // WithContext 设置上下文 func (t *TargetInfo) WithContext(ctx context.Context) *TargetInfo { t.context = ctx return t } // SetMetadata 设置元数据 func (t *TargetInfo) SetMetadata(key string, value interface{}) *TargetInfo { if t.metadata == nil { t.metadata = make(map[string]interface{}) } t.metadata[key] = value return t } // GetMetadata 获取元数据 func (t *TargetInfo) GetMetadata(key string) (interface{}, bool) { if t.metadata == nil { return nil, false } value, exists := t.metadata[key] return value, exists } // String 返回字符串表示 func (t *TargetInfo) String() string { return HostInfoString(t.HostInfo) } // HasMetadata 检查是否有指定的元数据 func (t *TargetInfo) HasMetadata(key string) bool { _, exists := t.GetMetadata(key) return exists }