32 lines
517 B
Go
32 lines
517 B
Go
package rpc
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/TeaOSLab/EdgeHttpDNS/internal/configs"
|
|
)
|
|
|
|
var sharedRPCClient *RPCClient
|
|
var sharedLocker sync.Mutex
|
|
|
|
func SharedRPC() (*RPCClient, error) {
|
|
sharedLocker.Lock()
|
|
defer sharedLocker.Unlock()
|
|
|
|
config, err := configs.SharedAPIConfig()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if sharedRPCClient == nil {
|
|
client, err := NewRPCClient(config)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
sharedRPCClient = client
|
|
return sharedRPCClient, nil
|
|
}
|
|
|
|
return sharedRPCClient, nil
|
|
}
|