Make the onEventReceived type more explicit
This commit is contained in:
parent
31e9312731
commit
ae66114ca1
2 changed files with 5 additions and 3 deletions
|
|
@ -22,15 +22,17 @@ type Event =
|
||||||
| ReceivedZigbeeEvent of payload: string
|
| ReceivedZigbeeEvent of payload: string
|
||||||
| TimeChanged of DateTime
|
| TimeChanged of DateTime
|
||||||
|
|
||||||
|
type ParseEventError = ParseZigbeeEventError of ParseZigbeeEventError
|
||||||
|
|
||||||
type State = { Time: DateTime }
|
type State = { Time: DateTime }
|
||||||
|
|
||||||
let onEventReceived (state: State) (event: Event) =
|
let onEventReceived (state: State) (event: Event) : Result<State * ZigbeeCommand seq, ParseEventError> =
|
||||||
result {
|
result {
|
||||||
let partOfDay = getPartOfDay state.Time
|
let partOfDay = getPartOfDay state.Time
|
||||||
|
|
||||||
match event with
|
match event with
|
||||||
| ReceivedZigbeeEvent payload ->
|
| ReceivedZigbeeEvent payload ->
|
||||||
let! zigbeeEvent = parseZigbeeEvent payload
|
let! zigbeeEvent = parseZigbeeEvent payload |> Result.mapError ParseZigbeeEventError
|
||||||
|
|
||||||
return
|
return
|
||||||
state,
|
state,
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ let private handleEvent (mqttClient: IMqttClient) (logger: ILogger) (state: Stat
|
||||||
do! publishZigbeeCommands mqttClient logger commands
|
do! publishZigbeeCommands mqttClient logger commands
|
||||||
return newState
|
return newState
|
||||||
}
|
}
|
||||||
| Error UnknownType -> async.Return state
|
| Error(ParseZigbeeEventError UnknownType) -> async.Return state
|
||||||
| Error e ->
|
| Error e ->
|
||||||
logger.LogError("Error {Error} while {Event}", e, event)
|
logger.LogError("Error {Error} while {Event}", e, event)
|
||||||
async.Return state
|
async.Return state
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue