package master import ( "bdgrp_go/pbutil" "bdgrp_go/utils" "bytes" "compress/bzip2" "io" "os" "path/filepath" "sync" ) var ( cache map[string]any mu sync.RWMutex ) func GetMaster() map[string]any { mu.RLock() if cache != nil { mu.RUnlock() return cache } mu.RUnlock() return ReloadMaster() } func ReloadMaster() map[string]any { server := os.Getenv("SERVER") filePath := filepath.Join("resp", server, "suitemaster.bz2") fileBuffer, err := os.ReadFile(filePath) if err != nil { return cache } decrypted, err := utils.Decrypt(fileBuffer) if err != nil { return cache } decompressed, err := io.ReadAll(bzip2.NewReader(bytes.NewReader(decrypted))) if err != nil { return cache } result, err := pbutil.Decode("SuiteMasterGetResponse", decompressed) if err != nil { return cache } mu.Lock() cache = result mu.Unlock() return cache }