public PublishReflex(MqttClientConfiguration mqttConfiguration, IIncomingPacketStore store, Func <IActivityMonitor, string, PipeReader, int, QualityOfService, bool, CancellationToken, ValueTask> messageHandler, OutputPump output) { _mqttConfiguration = mqttConfiguration; _store = store; _messageHandler = messageHandler; _output = output; }
/// <summary> /// Instantiate the <see cref="MqttClientImpl"/> with the given configuration. /// </summary> /// <param name="config">The configuration to use.</param> /// <param name="messageHandler">The delegate that will handle incoming messages. <see cref="MessageHandlerDelegate"/> docs for more info.</param> internal MqttClientImpl(ProtocolConfiguration protocolConfig, MqttClientConfiguration config, Func <IActivityMonitor, string, PipeReader, int, QualityOfService, bool, CancellationToken, ValueTask> messageHandler) : base(config) { (_pConfig, _config, _messageHandler) = (protocolConfig, config, messageHandler); if (config.WaitTimeoutMilliseconds > config.KeepAliveSeconds && config.KeepAliveSeconds != 0) { throw new ArgumentException("Wait timeout should be smaller than the keep alive."); } }
public static IMqttClient CreateMQTTClient(this MqttClientFactory?factory, MqttClientConfiguration config, Func <IActivityMonitor, DisposableApplicationMessage, ValueTask> messageHandler) => factory.CreateMQTTClient(config, new HandlerClosure(messageHandler).HandleMessage);
public static IMqttClient CreateMQTTClient(this MqttClientFactory?factory, MqttClientConfiguration config, Func <IActivityMonitor, string, PipeReader, int, QualityOfService, bool, CancellationToken, ValueTask> messageHandler) => new MqttClientImpl(ProtocolConfiguration.Mqtt5, config, messageHandler);