package sdk import ( "git.sxidc.com/service-supports/ds-sdk/client" "git.sxidc.com/service-supports/ds-sdk/grpc_client" "github.com/pkg/errors" ) var sdkInstance *SDK func GetInstance() *SDK { return sdkInstance } func InitInstance(token string, address string, httpPort string, grpcPort string, namespace string, dataSource string, opts ...Option) error { if sdkInstance != nil { return nil } options := &Options{ token: token, baseUrl: "http://" + address + ":" + httpPort, grpcAddress: address + ":" + grpcPort, namespace: namespace, dataSource: dataSource, } for _, opt := range opts { opt(options) } c := client.New(options.timeout) namespaceInfos, err := c.GetNamespaces(options.token, options.baseUrl, options.namespace, 1, 1) if err != nil { return err } if namespaceInfos == nil || len(namespaceInfos) == 0 { return errors.New("命名空间不存在") } dataSourceInfos, err := c.GetDataSources( options.token, options.baseUrl, options.namespace, options.dataSource, "", 1, 1) if err != nil { return err } if dataSourceInfos == nil || len(dataSourceInfos) == 0 { return errors.New("数据源不存在") } grpcClient, err := grpc_client.NewClient(options.grpcAddress) if err != nil { return err } sdkInstance = &SDK{ options: options, client: c, grpcClient: grpcClient, } return nil } func DestroyInstance() error { if sdkInstance == nil { return nil } err := grpc_client.Destroy(sdkInstance.grpcClient) if err != nil { return err } sdkInstance = nil return nil }