MCPcopy Create free account
hub / github.com/0xUnixIO/pulse / Restore

Method Restore

internal/sniproxy/manager.go:127–147  ·  view source on GitHub ↗

Restore 从磁盘读取上次 Apply 的配置并启动。如无文件或文件损坏则静默跳过, 等待 server 第一次推送。

()

Source from the content-addressed store, hash-verified

125// Restore 从磁盘读取上次 Apply 的配置并启动。如无文件或文件损坏则静默跳过,
126// 等待 server 第一次推送。
127func (m *Manager) Restore() error {
128 m.mu.Lock()
129 defer m.mu.Unlock()
130
131 if m.statePath == "" {
132 return nil
133 }
134 data, err := os.ReadFile(m.statePath)
135 if err != nil {
136 if os.IsNotExist(err) {
137 return nil
138 }
139 return fmt.Errorf("read state: %w", err)
140 }
141 var cfg ManagerConfig
142 if err := json.Unmarshal(data, &cfg); err != nil {
143 log.Printf("sniproxy: state file corrupted, ignoring: %v", err)
144 return nil
145 }
146 return m.applyLocked(cfg, false)
147}
148
149// Apply 启动或热更新到新配置,并把配置持久化到磁盘。
150// 相同配置重复调用是幂等的。

Callers 3

RunFunction · 0.95

Calls 1

applyLockedMethod · 0.95

Tested by 2