instance.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package sdk
  2. import (
  3. "git.sxidc.com/service-supports/ds-sdk/client"
  4. "git.sxidc.com/service-supports/ds-sdk/grpc_client"
  5. )
  6. var sdkInstance *SDK
  7. func GetInstance() *SDK {
  8. return sdkInstance
  9. }
  10. func InitInstance(token string, address string, httpPort string, grpcPort string, namespace string, dataSource string, opts ...Option) error {
  11. if sdkInstance != nil {
  12. return nil
  13. }
  14. options := &Options{
  15. token: token,
  16. baseUrl: "http://" + address + ":" + httpPort,
  17. grpcAddress: address + ":" + grpcPort,
  18. namespace: namespace,
  19. dataSource: dataSource,
  20. }
  21. for _, opt := range opts {
  22. opt(options)
  23. }
  24. c := client.New(options.timeout)
  25. grpcClient, err := grpc_client.NewClient(options.grpcAddress, options.timeout)
  26. if err != nil {
  27. return err
  28. }
  29. sdkInstance = &SDK{
  30. options: options,
  31. client: c,
  32. grpcClient: grpcClient,
  33. }
  34. return nil
  35. }
  36. func DestroyInstance() error {
  37. if sdkInstance == nil {
  38. return nil
  39. }
  40. err := grpc_client.Destroy(sdkInstance.grpcClient)
  41. if err != nil {
  42. return err
  43. }
  44. sdkInstance = nil
  45. return nil
  46. }