diff options
Diffstat (limited to 'daemon/daemon.go')
-rw-r--r-- | daemon/daemon.go | 46 |
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") +} |