Files
bdgrp_go/master/master.go
2026-09-04 23:03:50 +08:00

59 lines
890 B
Go

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()
defer mu.RUnlock()
if cache != nil {
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
}