Beispiel #1
0
        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();
            }
        }
Beispiel #2
0
        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();
            }
        }
Beispiel #3
0
 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);
 }