Publish packets.
This commit is contained in:
@@ -1,21 +1,55 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
"git.wntrmute.dev/kyle/sensenet/config"
|
||||
"git.wntrmute.dev/kyle/sensenet/receiver"
|
||||
"git.wntrmute.dev/kyle/sensenet/topic"
|
||||
|
||||
// topics, imported for effects
|
||||
_ "git.wntrmute.dev/kyle/sensenet/topic/pht"
|
||||
_ "git.wntrmute.dev/kyle/sensenet/topic/power"
|
||||
)
|
||||
|
||||
func main() {
|
||||
configFilePath := flag.String("f", config.DefaultConfigFile, "`path` to config file")
|
||||
workers := flag.Int("w", 4, "`number` of worker threads to launch")
|
||||
flag.Parse()
|
||||
|
||||
config, err := config.LoadConfig(*configFilePath)
|
||||
cfg, err := config.LoadConfig(*configFilePath)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to load config file '%s': %s", *configFilePath, err)
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
db, err := cfg.Database.Connect(ctx)
|
||||
if err != nil {
|
||||
log.Fatal("couldn't connect to database:", err)
|
||||
}
|
||||
|
||||
if !topic.ValidateTopics(cfg.Publishers) {
|
||||
log.Fatal("unhandled topics")
|
||||
}
|
||||
|
||||
err = topic.Setup(ctx, db)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
rcvr := receiver.New()
|
||||
|
||||
fmt.Println(config)
|
||||
for _, publisher := range cfg.Publishers {
|
||||
err = rcvr.Subscribe(publisher)
|
||||
if err != nil {
|
||||
log.Fatalf("couldn't connect to '%s' @ %s: %s", publisher.Addr, publisher.Name, err)
|
||||
}
|
||||
}
|
||||
|
||||
log.Println("launching workers")
|
||||
for i := 0; i < *workers; i++ {
|
||||
go rcvr.Store(context.Background(), db)
|
||||
}
|
||||
rcvr.LogErrors()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user