MqttFactory.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. using MQTTnet.Adapter;
  2. using MQTTnet.Client;
  3. using MQTTnet.Diagnostics;
  4. using MQTTnet.Implementations;
  5. using MQTTnet.LowLevelClient;
  6. using MQTTnet.Server;
  7. using System;
  8. using System.Collections.Generic;
  9. namespace MQTTnet
  10. {
  11. public sealed class MqttFactory : IMqttFactory
  12. {
  13. IMqttClientAdapterFactory _clientAdapterFactory = new MqttClientAdapterFactory();
  14. public MqttFactory() : this(new MqttNetLogger())
  15. {
  16. }
  17. public MqttFactory(IMqttNetLogger logger)
  18. {
  19. DefaultLogger = logger ?? throw new ArgumentNullException(nameof(logger));
  20. }
  21. public IMqttNetLogger DefaultLogger { get; }
  22. public IMqttFactory UseClientAdapterFactory(IMqttClientAdapterFactory clientAdapterFactory)
  23. {
  24. _clientAdapterFactory = clientAdapterFactory ?? throw new ArgumentNullException(nameof(clientAdapterFactory));
  25. return this;
  26. }
  27. public ILowLevelMqttClient CreateLowLevelMqttClient()
  28. {
  29. return CreateLowLevelMqttClient(DefaultLogger);
  30. }
  31. public ILowLevelMqttClient CreateLowLevelMqttClient(IMqttNetLogger logger)
  32. {
  33. if (logger == null) throw new ArgumentNullException(nameof(logger));
  34. return new LowLevelMqttClient(_clientAdapterFactory, logger);
  35. }
  36. public ILowLevelMqttClient CreateLowLevelMqttClient(IMqttClientAdapterFactory clientAdapterFactory)
  37. {
  38. if (clientAdapterFactory == null) throw new ArgumentNullException(nameof(clientAdapterFactory));
  39. return new LowLevelMqttClient(_clientAdapterFactory, DefaultLogger);
  40. }
  41. public ILowLevelMqttClient CreateLowLevelMqttClient(IMqttNetLogger logger, IMqttClientAdapterFactory clientAdapterFactoryy)
  42. {
  43. if (logger == null) throw new ArgumentNullException(nameof(logger));
  44. if (clientAdapterFactoryy == null) throw new ArgumentNullException(nameof(clientAdapterFactoryy));
  45. return new LowLevelMqttClient(_clientAdapterFactory, logger);
  46. }
  47. public IMqttClient CreateMqttClient()
  48. {
  49. return CreateMqttClient(DefaultLogger);
  50. }
  51. public IMqttClient CreateMqttClient(IMqttNetLogger logger)
  52. {
  53. if (logger == null) throw new ArgumentNullException(nameof(logger));
  54. return new MqttClient(_clientAdapterFactory, logger);
  55. }
  56. public IMqttClient CreateMqttClient(IMqttClientAdapterFactory clientAdapterFactory)
  57. {
  58. if (clientAdapterFactory == null) throw new ArgumentNullException(nameof(clientAdapterFactory));
  59. return new MqttClient(clientAdapterFactory, DefaultLogger);
  60. }
  61. public IMqttClient CreateMqttClient(IMqttNetLogger logger, IMqttClientAdapterFactory clientAdapterFactory)
  62. {
  63. if (logger == null) throw new ArgumentNullException(nameof(logger));
  64. if (clientAdapterFactory == null) throw new ArgumentNullException(nameof(clientAdapterFactory));
  65. return new MqttClient(clientAdapterFactory, logger);
  66. }
  67. public IMqttServer CreateMqttServer()
  68. {
  69. return CreateMqttServer(DefaultLogger);
  70. }
  71. public IMqttServer CreateMqttServer(IMqttNetLogger logger)
  72. {
  73. if (logger == null) throw new ArgumentNullException(nameof(logger));
  74. return CreateMqttServer(new List<IMqttServerAdapter> { new MqttTcpServerAdapter(logger) }, logger);
  75. }
  76. public IMqttServer CreateMqttServer(IEnumerable<IMqttServerAdapter> serverAdapters, IMqttNetLogger logger)
  77. {
  78. if (serverAdapters == null) throw new ArgumentNullException(nameof(serverAdapters));
  79. if (logger == null) throw new ArgumentNullException(nameof(logger));
  80. return new MqttServer(serverAdapters, logger);
  81. }
  82. public IMqttServer CreateMqttServer(IEnumerable<IMqttServerAdapter> serverAdapters)
  83. {
  84. if (serverAdapters == null) throw new ArgumentNullException(nameof(serverAdapters));
  85. return new MqttServer(serverAdapters, DefaultLogger);
  86. }
  87. }
  88. }