aboutsummaryrefslogtreecommitdiff
path: root/daemon/daemon.go
diff options
context:
space:
mode:
Diffstat (limited to 'daemon/daemon.go')
-rw-r--r--daemon/daemon.go46
1 files changed, 46 insertions, 0 deletions
diff --git a/daemon/daemon.go b/daemon/daemon.go
new file mode 100644
index 00000000..494e0356
--- /dev/null
+++ b/daemon/daemon.go
@@ -0,0 +1,46 @@
+// Copyright 2018 Frédéric Guillot. All rights reserved.
+// Use of this source code is governed by the Apache 2.0
+// license that can be found in the LICENSE file.
+
+package daemon
+
+import (
+ "context"
+ "os"
+ "os/signal"
+ "time"
+
+ "github.com/miniflux/miniflux/config"
+ "github.com/miniflux/miniflux/logger"
+ "github.com/miniflux/miniflux/reader/feed"
+ "github.com/miniflux/miniflux/scheduler"
+ "github.com/miniflux/miniflux/storage"
+)
+
+// Run starts the daemon.
+func Run(cfg *config.Config, store *storage.Storage) {
+ logger.Info("Starting Miniflux...")
+
+ stop := make(chan os.Signal, 1)
+ signal.Notify(stop, os.Interrupt)
+
+ feedHandler := feed.NewFeedHandler(store)
+ pool := scheduler.NewWorkerPool(feedHandler, cfg.GetInt("WORKER_POOL_SIZE", config.DefaultWorkerPoolSize))
+ server := newServer(cfg, store, pool, feedHandler)
+
+ scheduler.NewFeedScheduler(
+ store,
+ pool,
+ cfg.GetInt("POLLING_FREQUENCY", config.DefaultPollingFrequency),
+ cfg.GetInt("BATCH_SIZE", config.DefaultBatchSize),
+ )
+
+ scheduler.NewSessionScheduler(store, config.DefaultSessionCleanupFrequency)
+
+ <-stop
+ logger.Info("Shutting down the server...")
+ ctx, _ := context.WithTimeout(context.Background(), 5*time.Second)
+ server.Shutdown(ctx)
+ store.Close()
+ logger.Info("Server gracefully stopped")
+}