X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;f=go%2Fr3-eventbroker_zmq%2Fr3events%2Fmarshal_events.go;h=830ff6bae1e78a9160a568bb80ca5944ae1c8b95;hb=281827cdf431aec452bd1dc942a24c766a38efcb;hp=66799c74cd3c25ff3876cc0670a6bc84165277be;hpb=4f453b058059ac0964eb6ba25a79f7445bb3ef3a;p=svn42.git diff --git a/go/r3-eventbroker_zmq/r3events/marshal_events.go b/go/r3-eventbroker_zmq/r3events/marshal_events.go index 66799c7..830ff6b 100644 --- a/go/r3-eventbroker_zmq/r3events/marshal_events.go +++ b/go/r3-eventbroker_zmq/r3events/marshal_events.go @@ -26,47 +26,63 @@ func MarshalEvent2ByteByte(event_interface interface{}) (data [][]byte, err erro return } -func UnmarshalByteByte2Event(data [][]byte) (event interface{}, err error) { +func UnmarshalByteByte2Event(data [][]byte) (event interface{}, category string, err error) { if len(data) != 2 { - return nil, errors.New("not a r3event message") + return nil, "", errors.New("not a r3event message") } switch string(data[0]) { case "DoorLockUpdate": - event = new(DoorLockUpdate) - err = json.Unmarshal(data[1],event) + event = DoorLockUpdate{} + err = json.Unmarshal(data[1],&event) + category = "door" case "DoorAjarUpdate": - event := new(DoorAjarUpdate) - err = json.Unmarshal(data[1], event) + event := DoorAjarUpdate{} + err = json.Unmarshal(data[1], &event) + category = "door" case "BackdoorAjarUpdate": - event := new(DoorAjarUpdate) - err = json.Unmarshal(data[1], event) + event := DoorAjarUpdate{} + err = json.Unmarshal(data[1], &event) + category = "door" case "DoorCommandEvent": - event := new(DoorCommandEvent) - err = json.Unmarshal(data[1], event) + event := DoorCommandEvent{} + err = json.Unmarshal(data[1], &event) + category = "door" + case "DoorProblemEvent": + event := DoorProblemEvent{} + err = json.Unmarshal(data[1], &event) + category = "door" case "BoreDoomButtonPressEvent": - event := new(BoreDoomButtonPressEvent) - err = json.Unmarshal(data[1], event) + event := BoreDoomButtonPressEvent{} + err = json.Unmarshal(data[1], &event) + category = "buttons" case "TempSensorUpdate": - event := new(TempSensorUpdate) - err = json.Unmarshal(data[1], event) + event := TempSensorUpdate{} + err = json.Unmarshal(data[1], &event) + category = "sensors" case "IlluminationSensorUpdate": - event := new(IlluminationSensorUpdate) - err = json.Unmarshal(data[1], event) + event := IlluminationSensorUpdate{} + err = json.Unmarshal(data[1], &event) + category = "sensors" case "TimeTick": - event := new(TimeTick) - err = json.Unmarshal(data[1], event) + event := TimeTick{} + err = json.Unmarshal(data[1], &event) + category = "time" case "MovementSensorUpdate": - event := new(MovementSensorUpdate) - err = json.Unmarshal(data[1], event) + event := MovementSensorUpdate{} + err = json.Unmarshal(data[1], &event) + category = "movement" case "PresenceUpdate": - event := new(PresenceUpdate) - err = json.Unmarshal(data[1], event) + event := PresenceUpdate{} + err = json.Unmarshal(data[1], &event) + category = "presence" case "SomethingReallyIsMoving": - event := new(SomethingReallyIsMoving) - err = json.Unmarshal(data[1], event) + event := SomethingReallyIsMoving{} + err = json.Unmarshal(data[1], &event) + category = "movement" default: event = nil err = errors.New("cannot unmarshal unknown type") + category = "" } return }