package dps import ( "errors" "git.sxidc.com/service-supports/dps-sdk/dpsv1" "git.sxidc.com/service-supports/dps-sdk/ports" "sync" ) var clientMapMutex sync.Mutex var clientMap map[string]ports.Client func NewClient(address string, version string) (ports.Client, error) { clientMapMutex.Lock() defer clientMapMutex.Unlock() if clientMap == nil { clientMap = make(map[string]ports.Client) } client, ok := clientMap[version] if ok { return client, nil } switch version { case "v1": innerClient, err := dpsv1.NewClient(address) if err != nil { return nil, err } client = innerClient default: return nil, errors.New("不支持的版本") } clientMap[version] = client return client, nil } func DestroyClient(version string) error { clientMapMutex.Lock() defer clientMapMutex.Unlock() client, ok := clientMap[version] if !ok { return nil } switch version { case "v1": err := dpsv1.DestroyClient(client.(*dpsv1.Client)) if err != nil { return err } default: break } delete(clientMap, version) return nil }