use message queue to restore download from session file
This commit is contained in:
@@ -88,7 +88,7 @@ func (m *MemoryDB) Persist() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Restore a persisted state
|
// 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")
|
fd, err := os.Open("session.dat")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
@@ -114,7 +114,7 @@ func (m *MemoryDB) Restore(logger *slog.Logger) {
|
|||||||
m.table.Store(proc.Id, restored)
|
m.table.Store(proc.Id, restored)
|
||||||
|
|
||||||
if restored.Progress.Percentage != "-1" {
|
if restored.Progress.Percentage != "-1" {
|
||||||
go restored.Start()
|
mq.Publish(restored)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,8 +77,6 @@ func RunBlocking(cfg *RunConfig) {
|
|||||||
slog.NewTextHandler(io.MultiWriter(logWriters...), &slog.HandlerOptions{}),
|
slog.NewTextHandler(io.MultiWriter(logWriters...), &slog.HandlerOptions{}),
|
||||||
)
|
)
|
||||||
|
|
||||||
mdb.Restore(logger)
|
|
||||||
|
|
||||||
db, err := sql.Open("sqlite", cfg.DBPath)
|
db, err := sql.Open("sqlite", cfg.DBPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("failed to open database", slog.String("err", err.Error()))
|
logger.Error("failed to open database", slog.String("err", err.Error()))
|
||||||
@@ -90,7 +88,9 @@ func RunBlocking(cfg *RunConfig) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mq := internal.NewMessageQueue(logger)
|
mq := internal.NewMessageQueue(logger)
|
||||||
|
|
||||||
go mq.Subscriber()
|
go mq.Subscriber()
|
||||||
|
go mdb.Restore(mq, logger)
|
||||||
|
|
||||||
srv := newServer(serverConfig{
|
srv := newServer(serverConfig{
|
||||||
frontend: cfg.App,
|
frontend: cfg.App,
|
||||||
|
|||||||
Reference in New Issue
Block a user