/// <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); } }
/// <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); }
public Task Handle(IotCommand <SunSetEd> notification, CancellationToken cancellationToken) { //throw new NotImplementedException(); return(Task.CompletedTask); }