Introduce mqttMessageToReceivedZigbeeEvent
To make it more obvious that both cases in mainAsync just handle events.
This commit is contained in:
parent
ae66114ca1
commit
915d01e086
1 changed files with 9 additions and 10 deletions
|
|
@ -36,6 +36,10 @@ let private publishZigbeeCommands (mqttClient: IMqttClient) (logger: ILogger) (c
|
||||||
}
|
}
|
||||||
|
|
||||||
let private handleEvent (mqttClient: IMqttClient) (logger: ILogger) (state: State) (event: Event) =
|
let private handleEvent (mqttClient: IMqttClient) (logger: ILogger) (state: State) (event: Event) =
|
||||||
|
match event with
|
||||||
|
| ReceivedZigbeeEvent payload -> logger.LogInformation("Received message with payload {Payload}", payload)
|
||||||
|
| _ -> ()
|
||||||
|
|
||||||
let result = event |> onEventReceived state
|
let result = event |> onEventReceived state
|
||||||
|
|
||||||
match result with
|
match result with
|
||||||
|
|
@ -49,18 +53,11 @@ let private handleEvent (mqttClient: IMqttClient) (logger: ILogger) (state: Stat
|
||||||
logger.LogError("Error {Error} while {Event}", e, event)
|
logger.LogError("Error {Error} while {Event}", e, event)
|
||||||
async.Return state
|
async.Return state
|
||||||
|
|
||||||
let private onMqttMessageReceived
|
let private mqttMessageToReceivedZigbeeEvent (message: MqttApplicationMessage) =
|
||||||
(mqttClient: IMqttClient)
|
|
||||||
(logger: ILogger)
|
|
||||||
(state: State)
|
|
||||||
(message: MqttApplicationMessage)
|
|
||||||
=
|
|
||||||
let payload = message.Payload
|
let payload = message.Payload
|
||||||
let decodedPayload = Encoding.UTF8.GetString(&payload)
|
let decodedPayload = Encoding.UTF8.GetString(&payload)
|
||||||
|
|
||||||
logger.LogInformation("Received message with payload {Payload}", decodedPayload)
|
ReceivedZigbeeEvent decodedPayload
|
||||||
|
|
||||||
ReceivedZigbeeEvent decodedPayload |> handleEvent mqttClient logger state
|
|
||||||
|
|
||||||
[<EntryPoint>]
|
[<EntryPoint>]
|
||||||
let mainAsync _ =
|
let mainAsync _ =
|
||||||
|
|
@ -89,10 +86,12 @@ let mainAsync _ =
|
||||||
|
|
||||||
mqttClient.add_ApplicationMessageReceivedAsync (fun e ->
|
mqttClient.add_ApplicationMessageReceivedAsync (fun e ->
|
||||||
async {
|
async {
|
||||||
|
let event = mqttMessageToReceivedZigbeeEvent e.ApplicationMessage
|
||||||
|
|
||||||
do! stateLock.WaitAsync() |> Async.AwaitTask
|
do! stateLock.WaitAsync() |> Async.AwaitTask
|
||||||
|
|
||||||
try
|
try
|
||||||
let! newState = onMqttMessageReceived mqttClient logger state e.ApplicationMessage
|
let! newState = event |> handleEvent mqttClient logger state
|
||||||
state <- newState
|
state <- newState
|
||||||
finally
|
finally
|
||||||
stateLock.Release() |> ignore
|
stateLock.Release() |> ignore
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue