public ThingSetupInfo(IThingConfiguration thingConfiguration, IThingTemplate thingTemplate, IThing thing) : base(thingConfiguration.Settings) { Address = thingConfiguration.Address; Template = thingTemplate; Id = thing.Id; }
private async Task InitThingAsync(IThingConfiguration thingConfiguration) { var thing = await _thingBuilder.Build(thingConfiguration); if (thing == null) { return; } _requestDispatcher.Process(new KernelRequest($"InitThing {thing.Id}", () => thing.InitAsync())); }
public async Task <Thing> Build(IThingConfiguration thingConfiguration) { var gateway = _gatewayRepository.FirstOrDefault(x => x.Name == thingConfiguration.GatewayName); if (gateway == null) { Log.Warn($"Gateway '{thingConfiguration.GatewayName}' for thing '{thingConfiguration.Name}' not found"); return(null); } var thingTemplate = _thingTemplateRepository.GetTemplate(thingConfiguration.Template); return(await CreateThing(thingConfiguration, thingTemplate, gateway)); }
private async Task <Thing> CreateThing(IThingConfiguration thingConfiguration, IThingTemplate thingTemplate, IGateway gateway) { var thing = new Thing(thingConfiguration.Name, gateway.Id, thingTemplate, _thingChannelBuilder, _messageHub); var thingHandler = gateway.CreateThingHandler(new ThingSetupInfo(thingConfiguration, thingTemplate, thing)); if (thingHandler == null) { Log.Error($"Gateway '{thingConfiguration.GatewayName}' does not create thing handler for thing '{thingConfiguration.Name}'"); return(null); } Log.Info($"Thing handler for thing '{thingConfiguration.Name}' created"); thing.SetHandler(thingHandler); await thingHandler.SetupAsync(_messageHub).ConfigureAwait(false); await _thingRepository.AddAsync(thing).ConfigureAwait(false); return(thing); }