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; }
private Task InitThingsAsync(GatewayConfigurationPackage gatewayConfigurationPackage) { if (!_gatewayInitializedHandlers.Remove(gatewayConfigurationPackage, out var handler)) { return(Task.CompletedTask); } handler.Dispose(); return(gatewayConfigurationPackage.ThingConfigurations.ForEachAsync(InitThingAsync)); }
private Task InitGatewayConfigurationPackage(GatewayConfigurationPackage gatewayConfigurationPackage) { return(InitGatewayAsync(gatewayConfigurationPackage.GatewayConfiguration, gateway => RegisterThingsInitHandler(gateway, gatewayConfigurationPackage))); }