dps.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package dps
  2. import (
  3. "errors"
  4. "git.sxidc.com/service-supports/dps-sdk/dpsv1"
  5. "git.sxidc.com/service-supports/dps-sdk/ports"
  6. "sync"
  7. )
  8. var clientMapMutex sync.Mutex
  9. var clientMap map[string]ports.Client
  10. func NewClient(address string, version string) (ports.Client, error) {
  11. clientMapMutex.Lock()
  12. defer clientMapMutex.Unlock()
  13. if clientMap == nil {
  14. clientMap = make(map[string]ports.Client)
  15. }
  16. client, ok := clientMap[version]
  17. if ok {
  18. return client, nil
  19. }
  20. switch version {
  21. case "v1":
  22. innerClient, err := dpsv1.NewClient(address)
  23. if err != nil {
  24. return nil, err
  25. }
  26. client = innerClient
  27. default:
  28. return nil, errors.New("不支持的版本")
  29. }
  30. clientMap[version] = client
  31. return client, nil
  32. }
  33. func DestroyClient(version string) error {
  34. clientMapMutex.Lock()
  35. defer clientMapMutex.Unlock()
  36. client, ok := clientMap[version]
  37. if !ok {
  38. return nil
  39. }
  40. switch version {
  41. case "v1":
  42. err := dpsv1.DestroyClient(client.(*dpsv1.Client))
  43. if err != nil {
  44. return err
  45. }
  46. default:
  47. break
  48. }
  49. delete(clientMap, version)
  50. return nil
  51. }