void HandlePreferredGatewayChanges( LoRaRequest request, LoRaDevice loRaDevice, FunctionBundlerResult bundlerResult) { var preferredGatewayResult = bundlerResult.PreferredGatewayResult; if (preferredGatewayResult.IsSuccessful()) { var currentIsPreferredGateway = bundlerResult.PreferredGatewayResult.PreferredGatewayID == this.configuration.GatewayID; var preferredGatewayChanged = bundlerResult.PreferredGatewayResult.PreferredGatewayID != loRaDevice.PreferredGatewayID; if (preferredGatewayChanged) { Logger.Log(loRaDevice.DevEUI, $"preferred gateway changed from '{loRaDevice.PreferredGatewayID}' to '{preferredGatewayResult.PreferredGatewayID}'", LogLevel.Debug); } if (preferredGatewayChanged) { loRaDevice.UpdatePreferredGatewayID(bundlerResult.PreferredGatewayResult.PreferredGatewayID, acceptChanges: !currentIsPreferredGateway); } // Save the region if we are the winning gateway and it changed if (request.Region.LoRaRegion != loRaDevice.LoRaRegion) { loRaDevice.UpdateRegion(request.Region.LoRaRegion, acceptChanges: !currentIsPreferredGateway); } } else { Logger.Log(loRaDevice.DevEUI, $"failed to resolve preferred gateway: {preferredGatewayResult}", LogLevel.Error); } }