outputDispatcher
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
udi
|
29
main.go
29
main.go
@ -16,7 +16,8 @@ type Message struct {
|
|||||||
payload []byte
|
payload []byte
|
||||||
}
|
}
|
||||||
|
|
||||||
var messageChannel chan Message
|
var messageInputChannel chan Message = make(chan Message, 100)
|
||||||
|
var messageOutputChannel chan Message = make(chan Message, 100)
|
||||||
|
|
||||||
|
|
||||||
func onMessageReceived(client MQTT.Client, message MQTT.Message) {
|
func onMessageReceived(client MQTT.Client, message MQTT.Message) {
|
||||||
@ -26,7 +27,7 @@ func onMessageReceived(client MQTT.Client, message MQTT.Message) {
|
|||||||
payload: message.Payload(),
|
payload: message.Payload(),
|
||||||
}
|
}
|
||||||
select {
|
select {
|
||||||
case messageChannel <- m:
|
case messageInputChannel <- m:
|
||||||
{}
|
{}
|
||||||
//log.Println("Message sent to channel")
|
//log.Println("Message sent to channel")
|
||||||
default:
|
default:
|
||||||
@ -57,11 +58,24 @@ func onConnect(client MQTT.Client) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func dispatcher() {
|
func inputDispatcher() {
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case message := <- messageChannel:
|
case message := <- messageInputChannel:
|
||||||
log.Printf("Message arrived in dispatcher, topic: %s, payload: %s\n", message.topic, message.payload)
|
log.Printf("Message arrived in inputDispatcher, topic: %s, payload: %s\n", message.topic, message.payload)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func outputDispatcher(client MQTT.Client) {
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case message := <- messageOutputChannel:
|
||||||
|
log.Printf("Message arrived in outputDispatcher, topic: %s, payload: %s\n", message.topic, message.payload)
|
||||||
|
if token := client.Publish(message.topic, 0, false, message.payload); token.Wait() && token.Error() != nil {
|
||||||
|
log.Printf("Unable to publish, error %s", token.Error())
|
||||||
|
}
|
||||||
|
log.Println("Successfully published")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -124,12 +138,13 @@ func main() {
|
|||||||
|
|
||||||
log.Println("UDI starting")
|
log.Println("UDI starting")
|
||||||
|
|
||||||
messageChannel = make(chan Message, 100)
|
go inputDispatcher()
|
||||||
go dispatcher()
|
|
||||||
|
|
||||||
mqttClient := startMqttClient()
|
mqttClient := startMqttClient()
|
||||||
defer stopMqttClient(mqttClient)
|
defer stopMqttClient(mqttClient)
|
||||||
|
|
||||||
|
go outputDispatcher(mqttClient)
|
||||||
|
|
||||||
log.Println("UDI running")
|
log.Println("UDI running")
|
||||||
|
|
||||||
c := make(chan os.Signal, 1)
|
c := make(chan os.Signal, 1)
|
||||||
|
Reference in New Issue
Block a user