34 lines
771 B
Go
34 lines
771 B
Go
|
package daemon
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"os"
|
||
|
"os/signal"
|
||
|
"syscall"
|
||
|
|
||
|
"github.com/volker-raschek/flucky/pkg/config"
|
||
|
"github.com/volker-raschek/flucky/pkg/sensor"
|
||
|
"github.com/volker-raschek/flucky/pkg/types"
|
||
|
)
|
||
|
|
||
|
// Start the daemon
|
||
|
func Start(cnf *config.FluckyConfig) error {
|
||
|
|
||
|
interrupt := make(chan os.Signal, 1)
|
||
|
signal.Notify(interrupt, os.Interrupt, os.Kill, syscall.SIGTERM)
|
||
|
|
||
|
humidityChannel := make(chan *types.Humidity)
|
||
|
temperatureChannel := make(chan *types.Temperature)
|
||
|
|
||
|
go sensor.ReadHumiditiesContinuously(humiditySensors, humidityChannel)
|
||
|
go sensor.ReadTemperaturesContinuously(temperatureSensors, temperatureChannel)
|
||
|
|
||
|
for {
|
||
|
select {
|
||
|
case killSignal := <-interrupt:
|
||
|
return fmt.Errorf("Daemon was interruped by system signal %v", killSignal)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|