public MqttConsumerService(
            IManagedMqttClient mqttClient,
            IMqttApplicationProvider applicationProvider,
            IServiceScopeFactory serviceScopeFactory,
            IManagedMqttClientOptions mqttClientOptions,
            IOptions <TManagedMqttSettings> mqttSettings,
            ILogger <MqttConsumerService <TManagedMqttSettings> > logger)
        {
            MqttClient          = mqttClient;
            ApplicationProvider = applicationProvider;
            ServiceScopeFactory = serviceScopeFactory;
            Options             = mqttClientOptions;
            MqttSettings        = mqttSettings;
            Logger = logger;

            MqttClient.ApplicationMessageProcessedHandler = new ApplicationMessageProcessedHandlerDelegate(OnApplicationMessageProcessed);
            MqttClient.ApplicationMessageReceivedHandler  = new MqttApplicationMessageReceivedHandlerDelegate(OnApplicationMessageReceived);
            MqttClient.ApplicationMessageSkippedHandler   = new ApplicationMessageSkippedHandlerDelegate(OnApplicationMessageSkipped);

            MqttClient.ConnectedHandler        = new MqttClientConnectedHandlerDelegate(OnConnected);
            MqttClient.DisconnectedHandler     = new MqttClientDisconnectedHandlerDelegate(OnDisconnected);
            MqttClient.ConnectingFailedHandler = new ConnectingFailedHandlerDelegate(OnConnectingFailed);

            MqttClient.SynchronizingSubscriptionsFailedHandler = new SynchronizingSubscriptionsFailedHandlerDelegate(OnSynchronizingSubscriptionsFailed);

            ApplicationProvider.ApplicationChanged += OnApplicationChanged;
        }
        public void BindAll(IMqttApplicationProvider mqttApplicationProvider, IMqttMessageBus mqttMessageBus, bool sendDiscovery = true)
        {
            MqttApplicationProvider = mqttApplicationProvider ?? throw new ArgumentNullException(nameof(mqttApplicationProvider));
            MqttMessageBus          = mqttMessageBus ?? throw new ArgumentNullException(nameof(mqttMessageBus));

            foreach (var entityConfiguration in _entityConfigurations)
            {
                entityConfiguration.Bind(mqttMessageBus, sendDiscovery);
            }
        }
        public void BindAll(IMqttApplicationProvider mqttApplicationProvider, IMqttMessageBus mqttMessageBus, bool sendDiscovery = true)
        {
            MqttApplicationProvider = mqttApplicationProvider ?? throw new ArgumentNullException(nameof(mqttApplicationProvider));
            MqttMessageBus          = mqttMessageBus ?? throw new ArgumentNullException(nameof(mqttMessageBus));

            foreach (var entityBindingManager in _entityBindingManagers)
            {
                entityBindingManager.BindAll(mqttApplicationProvider, mqttMessageBus, sendDiscovery);
            }

            MqttApplicationProvider.Rebuild();
        }
 public HomeAssistantOutboundMqttDispatcher(
     IManagedMqttClient managedMqttClient,
     IMqttApplicationProvider mqttApplicationProvider,
     IMqttEntityControlPanel mqttEntityControlPanel,
     IMqttMessageBus messageBus
     )
 {
     ManagedMqttClient       = managedMqttClient;
     MqttApplicationProvider = mqttApplicationProvider;
     MqttEntityControlPanel  = mqttEntityControlPanel;
     MessageBus = messageBus;
 }
        private MqttConsumerService <ManagedMqttSettings> CreateMqttConsumerService(
            Action <ManagedMqttSettings> managedMqttSettingsConfiguration,
            IManagedMqttClient managedMqttClientOverride               = null,
            IMqttApplicationProvider mqttApplicationProviderOverride   = null,
            IServiceScopeFactory serviceScopeFactoryOverride           = null,
            IManagedMqttClientOptions managedMqttClientOptionsOverride = null
            )
        {
            var managedMqttSettings = new ManagedMqttSettings();

            managedMqttSettingsConfiguration.Invoke(managedMqttSettings);

            var managedMqttSettingsOptionsWrapper = new OptionsWrapper <ManagedMqttSettings>(managedMqttSettings);

            return(new MqttConsumerService <ManagedMqttSettings>(
                       managedMqttClientOverride ?? MockManagedMqttClient.Object,
                       mqttApplicationProviderOverride ?? MockMqttApplicationProvider.Object,
                       serviceScopeFactoryOverride ?? MockServiceScopeFactory.Object,
                       managedMqttClientOptionsOverride ?? MockManagedMqttClientOptions.Object,
                       managedMqttSettingsOptionsWrapper,
                       Logger
                       ));
        }