/// <summary>
        /// Dispatch command to commands
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="entity"></param>
        /// <param name="commandName"></param>
        /// <param name="args"></param>
        public object DispatchCommand <T>(T entity, string commandName, params object[] args) where T : IIotEntity
        {
            _notificationService.BroadcastMessage(IotCommand <T> .BuildCommand(entity, commandName, args));

            var commandMethod = _commands
                                .FirstOrDefault(s => s.EntityType == typeof(T) && s.CommandName == commandName.ToUpper());

            try
            {
                var result = commandMethod?.Method.Invoke(commandMethod.Component, new object[] { entity, commandName, args });

                return(result);
            }
            catch (Exception e)
            {
                _logger.LogError($"Error during dispatch command {commandName} for Entity: {entity.GetType().Name} => {e}");

                return(null);
            }
        }
예제 #2
0
        /// <summary>
        /// Handle command rise
        /// </summary>
        /// <param name="notification"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public Task Handle(IotCommand <WeatherEd> notification, CancellationToken cancellationToken)
        {
            _logger.LogInformation($"recevied from LUA => {notification.CommandName}");

            return(Task.CompletedTask);
        }
예제 #3
0
        public Task Handle(IotCommand <SunSetEd> notification, CancellationToken cancellationToken)
        {
            //throw new NotImplementedException();

            return(Task.CompletedTask);
        }