package main import ( mqtt "github.com/eclipse/paho.mqtt.golang" "log" "sync" ) func configure_mqtt(config *MqttConfig) mqtt.Client { opts := mqtt.NewClientOptions() opts.AddBroker(config.BrokerUri) opts.SetClientID("hswro-alarm-bot") opts.SetUsername(config.Username) opts.SetPassword(config.Password) // opts.SetDefaultPublishHandler(messagePubHandler) // opts.OnConnect = func() {} // opts.OnConnectionLost = connectLostHandler // TODO: reconnect? client := mqtt.NewClient(opts) if token := client.Connect(); token.Wait() && token.Error() != nil { panic(token.Error()) } return client } func HandleMqtt(events <-chan GenericMessage, s Sender, wg *sync.WaitGroup, logger *log.Logger, config *MqttConfig) <-chan GenericMessage { returnEvents := make(chan GenericMessage) go func() { wg.Add(1) defer wg.Done() mqttClient := configure_mqtt(config) for e := range events { returnEvents <- e } close(returnEvents) mqttClient.Disconnect(250) }() return returnEvents }