package initializer

import (
	cm "git.loafle.net/overflow/overflow_probe/agent_api/config_manager"
	"google.golang.org/grpc"
	"sync"
)

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 Stop(res chan bool) {

	GetInstance().stop()

	res <- true
}

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 "", err
	}
	defer conn.Close()

	return "", nil

}

func (i *Initializer) stop() {

}
