static OptionsPageViewModel() { tracker = DependencyTracker.Create <OptionsPageViewModel>(configurator => { configurator .RaiseProperty(model => model.IsDirty) .CalculatedBy(model => true) .WhenPropertyChanged(model => model.Delay); }); }
public CacheAccessor(string cacheConnectionString, IDependencyTracker dependencyTracker) { if (string.IsNullOrWhiteSpace(cacheConnectionString)) { throw new ArgumentException(Strings.CacheAccessor_Empty_ConnectionString_Message, nameof(cacheConnectionString)); } _connectionString = cacheConnectionString; _dependencyTracker = dependencyTracker ?? throw new ArgumentNullException(nameof(dependencyTracker)); _redisHost = _connectionString.Substring(0, _connectionString.IndexOf(",", StringComparison.Ordinal)); }
public void Constructor_Should_Throw_ArgumentNullException_When_IDependencyTracker_Is_Null() { // Arrange var connectionString = _fixture.Create <string>(); IDependencyTracker dependencyTracker = null; Action ctor = () => new CacheAccessor(connectionString, dependencyTracker); // Act + Assert ctor.Should() .Throw <ArgumentNullException>(); }
/// <summary> /// Creates an instance of IMongoDatabase from connection string in <i>Settings</i> class /// </summary> /// <param name="connection">Connection to data source</param> /// <param name="dependencyTracker">Inject dependency tracking implementation</param> internal DbContext(Connection connection, IDependencyTracker dependencyTracker) { NotTrackedCommands = (NotTrackedCommands == null || NotTrackedCommands.Count() == 0) ? new[] { "isMaster", "buildInfo", "getLastError", "saslStart", "saslContinue" } : NotTrackedCommands; var notTrackedCommands = NotTrackedCommands.Select(v => v.ToLower()).ToImmutableHashSet(); DependencyTracker = dependencyTracker; string connectionString = connection.GetConnectionString(); MongoUrl mongoUrl = new MongoUrl(connectionString); MongoClientSettings mongoClientSettings = MongoClientSettings.FromUrl(mongoUrl); mongoClientSettings.ClusterConfigurator = clusterConfigurator => { clusterConfigurator.Subscribe <CommandStartedEvent>(e => { if (e.Command != null && !notTrackedCommands.Contains(e.CommandName.ToLower())) { QueriesBuffer.TryAdd(e.RequestId, e.Command.ToString()); } }); clusterConfigurator.Subscribe <CommandSucceededEvent>(e => { if (notTrackedCommands.Contains(e.CommandName.ToLower())) { return; } if (QueriesBuffer.TryRemove(e.RequestId, out string query)) { DependencyTracker.Dependency(e.CommandName, query, true, e.Duration); } }); clusterConfigurator.Subscribe <CommandFailedEvent>(e => { if (notTrackedCommands.Contains(e.CommandName.ToLower())) { return; } if (QueriesBuffer.TryRemove(e.RequestId, out string query)) { DependencyTracker.Dependency(e.CommandName, query, false, e.Duration); } }); }; DatabaseName = new MongoUrl(connectionString).DatabaseName; Client = new MongoClient(mongoClientSettings); }
public Repository(Connection connection, IDependencyTracker dependencyTracker) { if (Context == null) { Context = new DbContext(connection, dependencyTracker); } CollectionName = typeof(T).Name.ToLower(); Collection = Context.Database.GetCollection <T>(CollectionName); //Create index for CreationDate (descending), if it does not exists var indexes = Collection.Indexes.List().ToList(); bool DoesIndexExists = indexes.Any(x => x.GetValue("name").AsString == "CreationDateIndex"); if (!DoesIndexExists) { var indexBuilder = Builders <T> .IndexKeys; var indexModel = new CreateIndexModel <T>(indexBuilder.Descending(x => x.CreationDate), new CreateIndexOptions { Name = "CreationDateIndex" }); Collection.Indexes.CreateOneAsync(indexModel); } }
public MongoClientFactory(IDependencyTracker dependencyTracker, MongoClientSettingsFactorySettings settings = null, ILogger logger = null) { _configurator = new MongoTrackingConfigurator(dependencyTracker, settings, logger); }
public StorageFactory(IDependencyTracker dependencyTracker) { this.dependencyTracker = dependencyTracker; }
public Storage(CloudTable cloudTable, IDependencyTracker dependencyTracker) { this.cloudTable = cloudTable; this.dependencyTracker = dependencyTracker; }
public MongoTrackingConfigurator(IDependencyTracker dependencyTracker, MongoClientSettingsFactorySettings settings = null, ILogger logger = null) { _dependencyTracker = dependencyTracker ?? throw new ArgumentNullException($"{nameof(dependencyTracker)} is required"); var notTrackedCommands = (settings ?? new MongoClientSettingsFactorySettings()).NotTrackedCommands.Select(v => v.ToLower()).ToImmutableHashSet(); OnCommandStartEvent = e => { try { if (e.Command != null && !notTrackedCommands.Contains(e.CommandName.ToLower())) { // ReSharper disable once SpecifyACultureInStringConversionExplicitly _queriesBuffer.TryAdd(e.RequestId, e.Command.ToString()); } } catch (Exception exception) { logger?.Exception(exception); } }; OnCommandSucceededEvent = e => { if (notTrackedCommands.Contains(e.CommandName.ToLower())) { return; } try { if (_queriesBuffer.TryRemove(e.RequestId, out var query)) { OnCommandCompleted( new MongoCommandCompletedEventArgs(e.CommandName, query, true, e.Duration)); } } catch (Exception exception) { logger?.Exception(exception); } }; OnCommandFailedEvent = e => { if (notTrackedCommands.Contains(e.CommandName.ToLower())) { return; } try { if (_queriesBuffer.TryRemove(e.RequestId, out var query)) { OnCommandCompleted( new MongoCommandCompletedEventArgs(e.CommandName, query, false, e.Duration)); } } catch (Exception exception) { logger?.Exception(exception); } }; }