Exemplo n.º 1
0
        internal Task InitAsync()
        {
            _stateChangedHandler = _messageHub
                                   .Handle <ThingStateChangedMessage>()
                                   .Where(msg => Id.Equals(msg.Id) && msg.NewState != State)
                                   .Synchronize()
                                   .Register(async msg => await OnStateChanged(msg));

            _channelHandlerValueChangedHandler = _messageHub
                                                 .Handle <ChannelHandlerValueChangedMessage>()
                                                 .Where(msg => Id.Equals(msg.ChannelId))
                                                 .Synchronize()
                                                 .Register(async msg => await OnChannelHandlerValueChanged(msg));

            return(Task.CompletedTask);
        }
Exemplo n.º 2
0
        public Item(string name, IItemType itemType, IItemBinding binding, IMessageHub messageHub)
        {
            _binding    = binding;
            _messageHub = messageHub;

            Name     = name;
            ItemType = itemType;

            _sendCommandHandler = messageHub
                                  .Handle <SendCommandToItemMessage>()
                                  .Where(msg => msg.ItemName == Name)
                                  .Register(async msg => await OnSendCommandToItem(msg));

            _itemValueUpdateHandler = messageHub
                                      .Handle <ItemValueUpdateMessage>()
                                      .Where(msg => msg.ItemName == Name)
                                      .Register(async msg => await OnItemValueUpdateHandler(msg));
        }
Exemplo n.º 3
0
        internal async Task InitAsync()
        {
            _stateChangedHandler = _messageHub
                                   .Handle <ThingStateChangedMessage>()
                                   .Where(msg => msg.Id == Id.ToString())
                                   .Synchronize()
                                   .Register(async msg => await OnStateChanged(msg));

            _channelAddedHandler = _messageHub
                                   .Handle <NewThingChannelMessage>()
                                   .Where(msg => Id.Equals(msg.ThingId))
                                   .Register(async msg => await OnChannelAdded(msg));

            _messageHub.SendMessage(new ThingStateChangedMessage(Id.ToString(), ThingState.Initializing));

            var state = await _thingHandler.InitAsync();

            _messageHub.SendMessage(new ThingStateChangedMessage(Id.ToString(), state));
        }
Exemplo n.º 4
0
        private void RegisterThingsInitHandler(IGateway gateway, GatewayConfigurationPackage gatewayConfigurationPackage)
        {
            var initThingsHandler = _messageHub
                                    .Handle <ThingStateChangedMessage>()
                                    .Where(msg => gateway.Id.Equals(msg.Id) && msg.NewState.IsInitialized())
                                    .Once()
                                    .Register(msg => InitThingsAsync(gatewayConfigurationPackage));

            _gatewayInitializedHandlers[gatewayConfigurationPackage] = initThingsHandler;
        }
Exemplo n.º 5
0
        public ItemBinding(string itemName, string channelId, IMessageHub messageHub)
        {
            _itemName   = itemName;
            _channelId  = channelId;
            _messageHub = messageHub;

            _channelValueChangedHandler = _messageHub
                                          .Handle <ChannelValueChangedMessage>()
                                          .Where(msg => msg.ChannelId == channelId)
                                          .Register(async msg => await OnChannelValueChanged(msg));
        }
Exemplo n.º 6
0
        public Task SetupAsync(IMessageHub messageHub)
        {
            MessageHub = messageHub;

            _writeValueHandler = MessageHub
                                 .Handle <WriteChannelValueMessage>()
                                 .Where(msg => ChannelId.Equals(msg.ChannelId))
                                 .Register(async msg => await WriteValueAsync(msg.Value));

            return(Task.CompletedTask);
        }
        public ItemChangedTrigger(IItemRepository itemRepository, IMessageHub messageHub, string itemName, object oldValue, object newValue, Func <Task> executeAsync)
        {
            _itemRepository = itemRepository;
            _itemName       = itemName;
            _oldValue       = oldValue;
            _newValue       = newValue;
            _executeAsync   = executeAsync;

            _itemValueChangedHandler = messageHub
                                       .Handle <ItemValueChangedMessage>()
                                       .Where(msg => msg.ItemName == itemName)
                                       .Register(OnItemValueChanged);
        }
Exemplo n.º 8
0
        internal async Task InitAsync()
        {
            _stateChangedHandler = _messageHub
                                   .Handle <ThingStateChangedMessage>()
                                   .Where(msg => msg.Id == Id.ToString() && msg.NewState != State)
                                   .Synchronize()
                                   .Register(async msg => await OnStateChanged(msg));

            _messageHub.SendMessage(new ThingStateChangedMessage(Id.ToString(), ThingState.Initializing));

            var state = await _gatewayHandler.InitAsync();

            _messageHub.SendMessage(new ThingStateChangedMessage(Id.ToString(), state));
        }