/// <summary> /// Customize the store configuration for one off tests. /// The return value is the database schema /// </summary> /// <param name="configure"></param> /// <returns></returns> protected string StoreOptions(Action <StoreOptions> configure) { overrideSession = true; if (session != null) { session.Dispose(); Disposables.Remove(session); session = null; } var options = new StoreOptions(); options.Connection(ConnectionSource.ConnectionString); // Can be overridden options.AutoCreateSchemaObjects = AutoCreate.All; options.NameDataLength = 100; options.DatabaseSchemaName = "special"; configure(options); store = new DocumentStore(options); Disposables.Add(store); store.Advanced.Clean.CompletelyRemoveAll(); return(options.DatabaseSchemaName); }
public override async Task SetParametersAsync(ParameterView parameters) { var disposables = PropChangeDisposables.ToList(); Dispose(PropChangeDisposables); await base.SetParametersAsync(parameters); foreach (var disposable in disposables) { Disposables.Remove(disposable); } }
internal void RegisterTransport <T>(string porterCode, T porter, TransportType?type = null, bool asDefault = true) where T : ITransport { CheckDisposed(); var success = false; if (porter is IRpcTransport rpcPorter) { _rpcPorters.AddOrUpdate(porterCode, _ => rpcPorter, (_, o) => { if (o is IDisposable od) { Disposables.Remove(od); od.Dispose(); } return(rpcPorter); }); var rpcDefault = asDefault && (type == null || type.Value == TransportType.Rpc); _rpcPorters.AddOrUpdate("", _ => rpcPorter, (_, o) => rpcDefault ? rpcPorter : o); if (porter is IDisposable d) { Disposables.Add(d); } success = true; } if (porter is IQueueTransport queuePorter) { _queuePorters.AddOrUpdate(porterCode, _ => queuePorter, (_, o) => { if (o is IDisposable od) { Disposables.Remove(od); od.Dispose(); } return(queuePorter); }); var queueDefault = asDefault && (type == null || type.Value == TransportType.Queue); _queuePorters.AddOrUpdate("", _ => queuePorter, (_, o) => queueDefault ? queuePorter : o); if (!success && porter is IDisposable d) { Disposables.Add(d); } success = true; } if (!success) { throw new ArgumentOutOfRangeException($"Unknown trnsport subtype for {typeof(T)}"); } }
protected void RemoveAndDispose(CancellationTokenSource cts) { cts.Dispose(); lock (Disposables) Disposables.Remove(cts); }