Publish packets.

This commit is contained in:
2022-02-27 02:10:21 -08:00
parent a3966fc28b
commit 579c17bb6a
11 changed files with 624 additions and 36 deletions

View File

@@ -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()
}