You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package services
import ( "context" "git.aiterp.net/lucifer/new-server/app/config" "git.aiterp.net/lucifer/new-server/models" "log" )
func StartPublisher() { ctx := context.Background()
go func() { for devices := range config.PublishChannel { if len(devices) == 0 { continue }
// Emergency solution! Please avoid!
// Send devices not belonging to the first channel separately
bridgeID := devices[0].BridgeID for _, device := range devices { if device.BridgeID != bridgeID { config.PublishChannel<-[]models.Device{device} } }
bridge, err := config.BridgeRepository().Find(ctx, devices[0].BridgeID) if err != nil { log.Println("Publishing error (1): " + err.Error()) continue }
driver, err := config.DriverProvider().Provide(bridge.Driver) if err != nil { log.Println("Publishing error (2): " + err.Error()) continue }
err = driver.Publish(ctx, bridge, devices) if err != nil { log.Println("Publishing error (3): " + err.Error()) continue } } }() }
|