Skip to content

Commit 5f279eb

Browse files
Added data persistence logic in simulator/model.go and vcsim/main.go
Signed-off-by: Manikandan251995 <manikandanmails955@gmail.com>
1 parent 0c1c5c6 commit 5f279eb

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

vcsim/main.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"strconv"
2020
"strings"
2121
"syscall"
22+
"time"
2223

2324
"github.com/google/uuid"
2425

@@ -86,6 +87,7 @@ func main() {
8687
trace := flag.String("trace-file", "", "Trace output file (defaults to stderr)")
8788
stdinExit := flag.Bool("stdinexit", false, "Press any key to exit")
8889
dir := flag.String("load", "", "Load model from directory")
90+
saveDir := flag.String("save", "", "Save model into directory")
8991

9092
flag.IntVar(&model.DelayConfig.Delay, "delay", model.DelayConfig.Delay, "Method response delay across all methods")
9193
methodDelayP := flag.String("method-delay", "", "Delay per method on the form 'method1:delay1,method2:delay2...'")
@@ -239,6 +241,38 @@ func main() {
239241
}()
240242
}
241243

244+
// Auto-save only when model state changes
245+
246+
go func() {
247+
248+
ticker := time.NewTicker(3 * time.Hour)
249+
250+
defer ticker.Stop()
251+
252+
for range ticker.C {
253+
254+
if model != nil && model.Dirty() {
255+
256+
log.Println("[vcsim] Detected in-memory change, saving model...")
257+
258+
if err := model.Save(*saveDir); err != nil {
259+
260+
log.Printf("[vcsim] Auto-save failed: %v", err)
261+
262+
} else {
263+
264+
model.ClearDirty()
265+
266+
log.Println("[vcsim] Auto-save completed successfully.")
267+
268+
}
269+
270+
}
271+
272+
}
273+
274+
}()
275+
242276
<-sig
243277

244278
model.Remove()

0 commit comments

Comments
 (0)