From 2f8b4cd1d644a9372103af70d1c7d52ceed588d5 Mon Sep 17 00:00:00 2001 From: marcobaobao Date: Tue, 24 Oct 2023 16:18:07 +0200 Subject: [PATCH] config package code refactor --- server/config/parser.go | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/server/config/parser.go b/server/config/parser.go index f0b634d..3074fca 100644 --- a/server/config/parser.go +++ b/server/config/parser.go @@ -7,8 +7,6 @@ import ( "gopkg.in/yaml.v3" ) -var lock sync.Mutex - type Config struct { Port int `yaml:"port"` DownloadPath string `yaml:"downloadPath"` @@ -20,6 +18,20 @@ type Config struct { SessionFilePath string `yaml:"session_file_path"` } +var ( + instance *Config + instanceOnce sync.Once +) + +func Instance() *Config { + if instance == nil { + instanceOnce.Do(func() { + instance = &Config{} + }) + } + return instance +} + func (c *Config) LoadFile(filename string) error { fd, err := os.Open(filename) if err != nil { @@ -32,16 +44,3 @@ func (c *Config) LoadFile(filename string) error { return nil } - -var instance *Config - -func Instance() *Config { - if instance == nil { - lock.Lock() - defer lock.Unlock() - if instance == nil { - instance = &Config{} - } - } - return instance -}