package initializer_go import ( "sync" cm "loafle.com/overflow/agent_api/config_manager" "google.golang.org/grpc" ) var ( once sync.Once instance *Initializer ) type Initializer struct { gconf *cm.GlobalConfig } func Start(ch chan string, conf *cm.GlobalConfig) error { i := GetInstance() i.gconf = conf key, err := i.getSecretKey() if err != nil { return err } ch <- key return nil } func GetInstance() *Initializer { once.Do(func() { instance = &Initializer{} }) return instance } func (i *Initializer) getSecretKey() (string, error) { //Todo. getting secret key from CentralAPI addr := i.gconf.Central.Address + ":" + string(i.gconf.Central.Port) conn, err := grpc.Dial(addr, grpc.WithInsecure()) if err != nil { return nil, err } defer conn.Close() return nil, nil }