public ModuleConnectionHost(
     NetworkServerConfiguration networkServerConfiguration,
     IClassCDeviceMessageSender defaultClassCDevicesMessageSender,
     ILoRaModuleClientFactory loRaModuleClientFactory,
     ILoRaDeviceRegistry loRaDeviceRegistry,
     LoRaDeviceAPIServiceBase loRaDeviceAPIService,
     ILogger <ModuleConnectionHost> logger,
     Meter meter)
 {
     this.networkServerConfiguration = networkServerConfiguration ?? throw new ArgumentNullException(nameof(networkServerConfiguration));
     this.classCMessageSender        = defaultClassCDevicesMessageSender ?? throw new ArgumentNullException(nameof(defaultClassCDevicesMessageSender));
     this.loRaDeviceRegistry         = loRaDeviceRegistry ?? throw new ArgumentNullException(nameof(loRaDeviceRegistry));
     this.loRaDeviceAPIService       = loRaDeviceAPIService ?? throw new ArgumentNullException(nameof(loRaDeviceAPIService));
     this.loRaModuleClientFactory    = loRaModuleClientFactory ?? throw new ArgumentNullException(nameof(loRaModuleClientFactory));
     this.logger = logger ?? throw new ArgumentNullException(nameof(logger));
     this.unhandledExceptionCount = (meter ?? throw new ArgumentNullException(nameof(meter))).CreateCounter <int>(MetricRegistry.UnhandledExceptions);
 }
 public DefaultLoRaDataRequestHandler(
     NetworkServerConfiguration configuration,
     ILoRaDeviceFrameCounterUpdateStrategyProvider frameCounterUpdateStrategyProvider,
     ILoRaPayloadDecoder payloadDecoder,
     IDeduplicationStrategyFactory deduplicationFactory,
     ILoRaADRStrategyProvider loRaADRStrategyProvider,
     ILoRAADRManagerFactory loRaADRManagerFactory,
     IFunctionBundlerProvider functionBundlerProvider,
     IClassCDeviceMessageSender classCDeviceMessageSender = null)
 {
     this.configuration = configuration;
     this.frameCounterUpdateStrategyProvider = frameCounterUpdateStrategyProvider;
     this.payloadDecoder            = payloadDecoder;
     this.deduplicationFactory      = deduplicationFactory;
     this.classCDeviceMessageSender = classCDeviceMessageSender;
     this.loRaADRStrategyProvider   = loRaADRStrategyProvider;
     this.loRaADRManagerFactory     = loRaADRManagerFactory;
     this.functionBundlerProvider   = functionBundlerProvider;
 }
 private void SetClassCMessageSender(DefaultClassCDevicesMessageSender classCMessageSender) => this.classCMessageSender = classCMessageSender;
 internal void SetClassCMessageSender(IClassCDeviceMessageSender classCMessageSender) => this.classCDeviceMessageSender = classCMessageSender;