X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;f=go%2Fr3-eventbroker_zmq%2Fr3events%2Fmarshal_events.go;h=830ff6bae1e78a9160a568bb80ca5944ae1c8b95;hb=b40171692bb6090aae3e75c4eb355ce077a61a89;hp=dd23d533a69a7e72969bd50283308e904159f62f;hpb=ff98cdc53bc87b9d4f3215df248c188a84cb2fb1;p=svn42.git diff --git a/go/r3-eventbroker_zmq/r3events/marshal_events.go b/go/r3-eventbroker_zmq/r3events/marshal_events.go index dd23d53..830ff6b 100644 --- a/go/r3-eventbroker_zmq/r3events/marshal_events.go +++ b/go/r3-eventbroker_zmq/r3events/marshal_events.go @@ -26,44 +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 := DoorAjarUpdate{} + err = json.Unmarshal(data[1], &event) + category = "door" case "DoorCommandEvent": - event := new(DoorCommandEvent) - err = json.Unmarshal(data[1], event) - case "ButtonPressUpdate": - event := new(ButtonPressUpdate) - 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 := 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 }