public void AppendServices(IServiceCollection services) { lock (_familyLock) { var(registry, scanners) = ScanningExploder.ExplodeSynchronously(services); Scanners = Scanners.Union(scanners).ToArray(); registry .Where(x => !x.ServiceType.HasAttribute <LamarIgnoreAttribute>()) .GroupBy(x => x.ServiceType) .Each(group => { if (_families.ContainsKey(group.Key)) { var family = _families[group.Key]; if (family.Append(@group, DecoratorPolicies) == AppendState.NewDefault) { _byType = _byType.Remove(group.Key); } } else { var family = buildFamilyForInstanceGroup(services, @group); _families.Add(@group.Key, family); } }); buildOutMissingResolvers(); rebuildReferencedAssemblyArray(); } }
public void AppendServices(IServiceCollection services) { lock (_familyLock) { applyScanners(services).Wait(TimeSpan.FromSeconds(2)); services .Where(x => !x.ServiceType.HasAttribute <LamarIgnoreAttribute>()) .GroupBy(x => x.ServiceType) .Each(group => { if (_families.ContainsKey(group.Key)) { var family = _families[group.Key]; if (family.Append(group) == AppendState.NewDefault) { _byType = _byType.Remove(group.Key); } } else { var family = buildFamilyForInstanceGroup(services, @group); _families.Add(@group.Key, family); } }); buildOutMissingResolvers(); rebuildReferencedAssemblyArray(); } }
public void Append <T>(DocumentProvider <T> provider) { // This might cause Marten to re-check the database storage, but double dipping // seems smarter than trying to be too clever and miss doing the check _storage = _storage.Remove(typeof(T)); _inner.Append(provider); }
internal void MarkAsRestarted(AsyncProjectionShard shard) { _states = _states.Remove(shard.Name.Identity); }