MqttClientAdapterFactory.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. using MQTTnet.Adapter;
  2. using MQTTnet.Client.Options;
  3. using MQTTnet.Diagnostics;
  4. using MQTTnet.Formatter;
  5. using System;
  6. namespace MQTTnet.Implementations
  7. {
  8. public class MqttClientAdapterFactory : IMqttClientAdapterFactory
  9. {
  10. public IMqttChannelAdapter CreateClientAdapter(IMqttClientOptions options, IMqttNetLogger logger)
  11. {
  12. if (options == null) throw new ArgumentNullException(nameof(options));
  13. switch (options.ChannelOptions)
  14. {
  15. case MqttClientTcpOptions _:
  16. {
  17. return new MqttChannelAdapter(new MqttTcpChannel(options), new MqttPacketFormatterAdapter(options.ProtocolVersion), logger);
  18. }
  19. case MqttClientWebSocketOptions webSocketOptions:
  20. {
  21. return new MqttChannelAdapter(new MqttWebSocketChannel(webSocketOptions), new MqttPacketFormatterAdapter(options.ProtocolVersion), logger);
  22. }
  23. default:
  24. {
  25. throw new NotSupportedException();
  26. }
  27. }
  28. }
  29. }
  30. }