From 62eadb52a6a0a54ccdcd00888d8c202694c56fd4 Mon Sep 17 00:00:00 2001 From: marcobaobao Date: Mon, 13 May 2024 11:15:08 +0200 Subject: [PATCH] use message queue to restore download from session file --- server/internal/memory_db.go | 4 ++-- server/server.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/server/internal/memory_db.go b/server/internal/memory_db.go index 5f64e73..a36f7a7 100644 --- a/server/internal/memory_db.go +++ b/server/internal/memory_db.go @@ -88,7 +88,7 @@ func (m *MemoryDB) Persist() error { } // Restore a persisted state -func (m *MemoryDB) Restore(logger *slog.Logger) { +func (m *MemoryDB) Restore(mq *MessageQueue, logger *slog.Logger) { fd, err := os.Open("session.dat") if err != nil { return @@ -114,7 +114,7 @@ func (m *MemoryDB) Restore(logger *slog.Logger) { m.table.Store(proc.Id, restored) if restored.Progress.Percentage != "-1" { - go restored.Start() + mq.Publish(restored) } } } diff --git a/server/server.go b/server/server.go index 7254c1e..e4c3b52 100644 --- a/server/server.go +++ b/server/server.go @@ -77,8 +77,6 @@ func RunBlocking(cfg *RunConfig) { slog.NewTextHandler(io.MultiWriter(logWriters...), &slog.HandlerOptions{}), ) - mdb.Restore(logger) - db, err := sql.Open("sqlite", cfg.DBPath) if err != nil { logger.Error("failed to open database", slog.String("err", err.Error())) @@ -90,7 +88,9 @@ func RunBlocking(cfg *RunConfig) { } mq := internal.NewMessageQueue(logger) + go mq.Subscriber() + go mdb.Restore(mq, logger) srv := newServer(serverConfig{ frontend: cfg.App,