MCPcopy
hub / github.com/SurgeDM/Surge / GetSettings

Method GetSettings

internal/processing/manager.go:134–162  ·  view source on GitHub ↗

GetSettings reloads disk-backed routing rules opportunistically so a long-lived lifecycle manager picks up saved settings changes without a restart.

()

Source from the content-addressed store, hash-verified

132// GetSettings reloads disk-backed routing rules opportunistically so a long-lived
133// lifecycle manager picks up saved settings changes without a restart.
134func (m *LifecycleManager) GetSettings() *config.Settings {
135 m.settingsMu.RLock()
136 settings := m.settings
137 refreshedAt := m.settingsRefreshedAt
138 m.settingsMu.RUnlock()
139
140 if settings != nil && time.Since(refreshedAt) < settingsRefreshTTL {
141 return settings
142 }
143
144 m.settingsMu.Lock()
145 defer m.settingsMu.Unlock()
146
147 // Double-check condition to prevent redundant disk reads under concurrent load
148 if m.settings != nil && time.Since(m.settingsRefreshedAt) < settingsRefreshTTL {
149 return m.settings
150 }
151
152 if loaded, err := config.LoadSettings(); err == nil && loaded != nil {
153 m.settings = loaded
154 m.settingsRefreshedAt = time.Now()
155 return loaded
156 }
157
158 if m.settings == nil {
159 return config.DefaultSettings()
160 }
161 return m.settings
162}
163
164// ApplySettings swaps in a new routing snapshot for future enqueue calls.
165func (m *LifecycleManager) ApplySettings(s *config.Settings) {

Calls 2

LoadSettingsFunction · 0.92
DefaultSettingsFunction · 0.92