Exemplo n.º 1
0
 public void Update(Thing t)
 {
     if (UpdatedSinceLastRender.Contains(t) == false)
     {
         UpdatedSinceLastRender.Add(t);
     }
     ThingUpdated.Fire(t);
     t.Updated.Fire();
 }
Exemplo n.º 2
0
        public void Consume(ThingUpdated @event)
        {
            var thing  = this.thingRepository.Get(@event.Id);
            var things = this.thingsRepository.Get(Root);

            things.Names.Remove(thing.Name);
            things.Names.Add(@event.Name);
            thing.Name = @event.Name;

            this.thingsRepository.AddOrUpdate(Root, things);
            this.thingRepository.AddOrUpdate(@event.Id, thing);
        }
Exemplo n.º 3
0
 public void Consume(ThingUpdated @event)
 {
     this.repository.AddOrUpdate(@event.Id, new Data.Thing {
         Name = @event.Name
     });
 }
Exemplo n.º 4
0
        private void RaiseEvent(string data)
        {
            var typeTemplate = new Regex(@",""type"":""(.*?)""}");

            var json = Json.Fix(data);
            var type = typeTemplate.Match(data).Groups[1].Value;

            //Debug.WriteLine($"{type} occured.");

            switch (type) //TODO this is not a complete list of events
            {
                #region Items

            case "ItemStateEvent":
                var itemStateEvent = AssembleEvent <ItemStateEvent>(json);
                ItemStateEventOccured?.Invoke(OpenHab.RestClient, itemStateEvent);
                break;

            case "ItemStateChangedEvent":
                var itemStateChangedEvent = AssembleEvent <ItemStateChangedEvent>(json);
                ItemStateChanged?.Invoke(OpenHab.RestClient, itemStateChangedEvent);
                break;

            case "ItemCommandEvent":
                var itemCommandEvent = AssembleEvent <ItemCommandEvent>(json);
                ItemCommandEventOccured?.Invoke(OpenHab.RestClient, itemCommandEvent);
                break;

            case "ItemAddedEvent":
                var itemAddedEvent = AssembleEvent <ItemAddedEvent>(json);
                ItemAdded?.Invoke(OpenHab.RestClient, itemAddedEvent);
                break;

            case "ItemRemovedEvent":
                var itemRemovedEvent = AssembleEvent <ItemRemovedEvent>(json);
                ItemRemoved?.Invoke(OpenHab.RestClient, itemRemovedEvent);
                break;

            case "ItemUpdatedEvent":
                var itemUpdatedEvent = AssembleEvent <ItemUpdatedEvent>(json);
                ItemUpdated?.Invoke(OpenHab.RestClient, itemUpdatedEvent);
                break;

                #endregion

                #region Things

            case "ThingStatusInfoEvent":
                var thingStatusInfoEvent = AssembleEvent <ThingStatusInfoEvent>(json);
                ThingStatusInfoEventOccured?.Invoke(OpenHab.RestClient, thingStatusInfoEvent);
                break;

            case "ThingStatusInfoChangedEvent":
                var thingStatusInfoChangedEvent = AssembleEvent <ThingStatusInfoChangedEvent>(json);
                ThingStatusInfoChanged?.Invoke(OpenHab.RestClient, thingStatusInfoChangedEvent);
                break;

            case "ThingAddedEvent":
                var thingAddedEvent = AssembleEvent <ThingAddedEvent>(json);
                ThingAdded?.Invoke(OpenHab.RestClient, thingAddedEvent);
                break;

            case "ThingUpdatedEvent":
                var thingUpdatedEvent = AssembleEvent <ThingUpdatedEvent>(json);
                ThingUpdated?.Invoke(OpenHab.RestClient, thingUpdatedEvent);
                break;

            case "ThingRemovedEvent":
                var thingRemovedEvent = AssembleEvent <ThingRemovedEvent>(json);
                ThingRemoved?.Invoke(OpenHab.RestClient, thingRemovedEvent);
                break;

            case "ItemChannelLinkAddedEvent":
                var itemChannelLinkAddedEvent = AssembleEvent <ItemChannelLinkAddedEvent>(json);
                ItemChannelLinkAdded?.Invoke(OpenHab.RestClient, itemChannelLinkAddedEvent);
                break;

            case "ItemChannelLinkRemovedEvent":
                var itemChannelLinkRemovedEvent = AssembleEvent <ItemChannelLinkRemovedEvent>(json);
                ItemChannelLinkRemoved?.Invoke(OpenHab.RestClient, itemChannelLinkRemovedEvent);
                break;

                #endregion

                #region Inbox

            case "InboxAddedEvent":
                var inboxAddedEvent = AssembleEvent <InboxAddedEvent>(json);
                InboxAdded?.Invoke(OpenHab.RestClient, inboxAddedEvent);
                break;

            case "InboxRemovedEvent":
                var inboxRemovedEvent = AssembleEvent <InboxRemovedEvent>(json);
                InboxRemoved?.Invoke(OpenHab.RestClient, inboxRemovedEvent);
                break;

                #endregion

                #region Rules

            case "RuleStatusInfoEvent":
                var ruleStatusInfo = AssembleEvent <RuleStatusInfoEvent>(json);
                RuleStatusInfoEventOccured?.Invoke(OpenHab.RestClient, ruleStatusInfo);
                break;

            case "RuleAddedEvent":
                var ruleAddedEvent = AssembleEvent <RuleAddedEvent>(json);
                RuleAdded?.Invoke(OpenHab.RestClient, ruleAddedEvent);
                break;

            case "RuleUpdatedEvent":
                var ruleUpdatedEvent = AssembleEvent <RuleUpdatedEvent>(json);
                RuleUpdated?.Invoke(OpenHab.RestClient, ruleUpdatedEvent);
                break;

            case "RuleRemovedEvent":
                var ruleRemovedEvent = AssembleEvent <RuleRemovedEvent>(json);
                RuleRemoved?.Invoke(OpenHab.RestClient, ruleRemovedEvent);
                break;

                #endregion

                #region Miscellaneous

            case "ConfigStatusInfoEvent":
                var configStatusInfoEvent = AssembleEvent <ConfigStatusInfoEvent>(json);
                ConfigStatusInfoEventOccured?.Invoke(OpenHab.RestClient, configStatusInfoEvent);
                break;

            case "PlayURLEvent":
                var playUrlEvent = AssembleEvent <PlayUrlEvent>(json);
                PlayUrlEventOccured?.Invoke(OpenHab.RestClient, playUrlEvent);
                break;

            default:
                var unknownEvent = AssembleEvent <UnknownEvent>(json);
                UnknownEventOccured?.Invoke(OpenHab.RestClient, unknownEvent);
                break;

                #endregion
            }
        }