/// <summary> /// Constructor /// </summary> /// <param name="dependencyParams">Notification parameters to use</param> protected SqlDependencyProvider(SqlDependencyParams dependencyParams) { if (dependencyParams == null) { throw new ArgumentNullException(nameof(dependencyParams)); } Parameters = dependencyParams; SyncLock = new object(); }
/// <summary> /// Constructor /// </summary> /// <param name="dependencyParams">Notification parameters to use</param> /// <param name="pollingPeriod">Polling period</param> public PollingSqlDependencyProvider(SqlDependencyParams dependencyParams, TimeSpan? pollingPeriod) : base(dependencyParams) { if (pollingPeriod.HasValue && (pollingPeriod.Value.TotalMilliseconds < 0)) { throw new ArgumentNullException(nameof(pollingPeriod)); } _pollingPeriod = pollingPeriod ?? DefaultPollingPeriod; }
/// <summary> /// Constructor /// </summary> /// <param name="dependencyParams">Notification parameters to use</param> public BrokerSqlDependencyProvider(SqlDependencyParams dependencyParams) : base(dependencyParams) { }
/// <summary> /// Creates a provider implementation /// </summary> /// <param name="dependencyParams">Dependency monitoring parameters</param> /// <param name="providerType">Type of the provider to create</param> /// <param name="serviceBrokerQueue">Queue name for the service broker implementation</param> /// <param name="periodForPollingProvider">Period for polling implementation</param> /// <returns>Sql Dependency Provider instance</returns> public static SqlDependencyProvider Create(SqlDependencyParams dependencyParams, SqlDependencyProviderType providerType, string serviceBrokerQueue, TimeSpan? periodForPollingProvider) { // Validate if (dependencyParams == null) { throw new ArgumentNullException(nameof(dependencyParams)); } if (periodForPollingProvider.HasValue && (periodForPollingProvider.Value.TotalMilliseconds < 0)) { throw new ArgumentNullException(nameof(periodForPollingProvider)); } serviceBrokerQueue = string.IsNullOrWhiteSpace(serviceBrokerQueue) ? null : serviceBrokerQueue.Trim(); // Make a copy & validate dependencyParams = dependencyParams.Clone() as SqlDependencyParams; if (dependencyParams == null) { throw new ArgumentNullException(nameof(dependencyParams)); } dependencyParams.ValidateAndAdjust(); // Check service broker availability if ((providerType == SqlDependencyProviderType.Polling) || ((providerType == SqlDependencyProviderType.Auto) && !IsServiceBrokerEnabled(dependencyParams.ConnectionString, serviceBrokerQueue))) { return new PollingSqlDependencyProvider(dependencyParams, periodForPollingProvider); } return new BrokerSqlDependencyProvider(dependencyParams); }
/// <summary> /// Creates a provider implementation /// </summary> /// <param name="dependencyParams">Dependency monitoring parameters</param> /// <param name="providerType">Type of the provider to create</param> /// <param name="serviceBrokerQueue">Queue name for the service broker implementation</param> /// <returns>Sql Dependency Provider instance</returns> public static SqlDependencyProvider Create(SqlDependencyParams dependencyParams, SqlDependencyProviderType providerType, string serviceBrokerQueue) { return Create(dependencyParams, providerType, serviceBrokerQueue, null); }
/// <summary> /// Creates a provider implementation /// </summary> /// <param name="dependencyParams">Dependency monitoring parameters</param> /// <param name="providerType">Type of the provider to create</param> /// <returns>Sql Dependency Provider instance</returns> public static SqlDependencyProvider Create(SqlDependencyParams dependencyParams, SqlDependencyProviderType providerType) { return Create(dependencyParams, providerType, null, null); }