in src/TriggerBinding/SqlTriggerListener.cs [68:91]
public SqlTriggerListener(string connectionString, string tableName, string userDefinedLeasesTableName, string userFunctionId, string oldUserFunctionId, ITriggeredFunctionExecutor executor, SqlOptions sqlOptions, ILogger logger, IConfiguration configuration)
{
this._connectionString = !string.IsNullOrEmpty(connectionString) ? connectionString : throw new ArgumentNullException(nameof(connectionString));
this._userTable = !string.IsNullOrEmpty(tableName) ? new SqlObject(tableName) : throw new ArgumentNullException(nameof(tableName));
this._userDefinedLeasesTableName = userDefinedLeasesTableName;
this._userFunctionId = !string.IsNullOrEmpty(userFunctionId) ? userFunctionId : throw new ArgumentNullException(nameof(userFunctionId));
this._oldUserFunctionId = oldUserFunctionId;
this._executor = executor ?? throw new ArgumentNullException(nameof(executor));
this._sqlOptions = sqlOptions ?? throw new ArgumentNullException(nameof(sqlOptions));
this._logger = logger ?? throw new ArgumentNullException(nameof(logger));
this._configuration = configuration ?? throw new ArgumentNullException(nameof(configuration));
int? configuredMaxChangesPerWorker;
// TODO: when we move to reading them exclusively from the host options, remove reading from settings.(https://github.com/Azure/azure-functions-sql-extension/issues/961)
configuredMaxChangesPerWorker = configuration.GetValue<int?>(ConfigKey_SqlTrigger_MaxChangesPerWorker);
this._maxChangesPerWorker = configuredMaxChangesPerWorker ?? this._sqlOptions.MaxChangesPerWorker;
if (this._maxChangesPerWorker <= 0)
{
throw new InvalidOperationException($"Invalid value for configuration setting '{ConfigKey_SqlTrigger_MaxChangesPerWorker}'. Ensure that the value is a positive integer.");
}
this._hasConfiguredMaxChangesPerWorker = configuredMaxChangesPerWorker != null;
this._scaleMonitor = new SqlTriggerScaleMonitor(this._userFunctionId, this._userTable, this._userDefinedLeasesTableName, this._connectionString, this._maxChangesPerWorker, this._logger);
this._targetScaler = new SqlTriggerTargetScaler(this._userFunctionId, this._userTable, this._userDefinedLeasesTableName, this._connectionString, this._maxChangesPerWorker, this._logger);
}