예제 #1
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;
        }
예제 #2
0
        private Task InitThingsAsync(GatewayConfigurationPackage gatewayConfigurationPackage)
        {
            if (!_gatewayInitializedHandlers.Remove(gatewayConfigurationPackage, out var handler))
            {
                return(Task.CompletedTask);
            }

            handler.Dispose();

            return(gatewayConfigurationPackage.ThingConfigurations.ForEachAsync(InitThingAsync));
        }
예제 #3
0
 private Task InitGatewayConfigurationPackage(GatewayConfigurationPackage gatewayConfigurationPackage)
 {
     return(InitGatewayAsync(gatewayConfigurationPackage.GatewayConfiguration,
                             gateway => RegisterThingsInitHandler(gateway, gatewayConfigurationPackage)));
 }