public DependencyResolver(IWindsorContainer container, ActorSystem system)
 {
     _container = container;
     _system    = system;
     _typeCache = new ConcurrentDictionary <string, Type>(StringComparer.InvariantCultureIgnoreCase);
     _system.AddDependencyResolver(this);
 }
示例#2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ServiceProviderDependencyResolver"/> class.
 /// </summary>
 /// <param name="serviceProvider">The container used to resolve references.</param>
 /// <param name="system">The actor system to plug into.</param>
 /// <exception cref="ArgumentNullException">
 /// Either the <paramref name="serviceProvider"/> or the <paramref name="system"/> was null.
 /// </exception>
 public ServiceProviderDependencyResolver(IServiceProvider serviceProvider, ActorSystem system)
 {
     Requires.NotNull(serviceProvider, nameof(serviceProvider));
     Requires.NotNull(system, nameof(system));
     _serviceProvider = serviceProvider;
     _system          = system;
     system.AddDependencyResolver(this);
 }
示例#3
0
        public AkkaServiceProviderDependencyResolver(
            ServiceProvider serviceProvider,
            ActorSystem actorSystem)
        {
            _container   = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider));
            _actorSystem = actorSystem;

            _actorSystem.AddDependencyResolver(this);
        }
        /// <summary>
        /// Create a new <see cref="MicrosoftDependencyResolver"/>.
        /// </summary>
        /// <param name="scopeFactory">
        ///   A factory for actor-level dependency injection scopes.
        /// </param>
        /// <param name="system">
        /// The <see cref="ActorSystem"/> for which dependency resolution is being provided.
        /// </param>
        public MicrosoftDependencyResolver(IServiceScopeFactory scopeFactory, ActorSystem system)
        {
            _system       = system ?? throw new ArgumentNullException(nameof(system));
            _scopeFactory = scopeFactory ?? throw new ArgumentNullException(nameof(scopeFactory));

            _system.AddDependencyResolver(this);

            _typeCache  = new ConcurrentDictionary <string, Type>(StringComparer.OrdinalIgnoreCase);
            _references = new ConditionalWeakTable <ActorBase, IServiceScope>();
        }
示例#5
0
        /// <summary>
        ///     Start the provisioning actor system.
        /// </summary>
        /// <param name="scopeFactory">
        ///     A factory for actor-level dependency injection scopes.
        /// </param>
        /// <returns>
        ///     The configured <see cref="ActorSystem"/>.
        /// </returns>
        public static ActorSystem Up(IServiceScopeFactory scopeFactory)
        {
            ActorSystem system = ActorSystem.Create("daas-demo", BaseConfiguration);

            system.AddDependencyResolver(
                new MedDependencyResolver(system, scopeFactory)
                );

            return(system);
        }
        public SimpleInjectorDependencyResolver(Container container, ActorSystem actorSystem)
        {
            _container   = container ?? throw new ArgumentNullException(nameof(container));
            _actorSystem = actorSystem ?? throw new ArgumentNullException(nameof(actorSystem));

            _actorSystem.AddDependencyResolver(this);

            _typeCache = new ConcurrentDictionary <string, Type>(StringComparer.OrdinalIgnoreCase);

            _references = new ConditionalWeakTable <ActorBase, SI.Scope>();
        }
示例#7
0
        public static ActorSystem RegisterDependencyResolver(
            this ActorSystem actorSystem,
            IServiceProvider serviceProvider)
        {
            var factoryScope = serviceProvider.GetRequiredService <IServiceScopeFactory>();
            var resolver     = new MicrosoftDependencyResolver(factoryScope, actorSystem);

            actorSystem.AddDependencyResolver(resolver);

            actorSystem.RegisterExtension(new ServiceProviderExtension(new ServiceProviderHolder(serviceProvider)));
            return(actorSystem);
        }
示例#8
0
        private static void CreateAndRegisterActors(IContainer container, ActorSystem system)
        {
            var propsResolver = new AutoFacDependencyResolver(container, system);
            system.AddDependencyResolver(propsResolver);

            var builder = new ContainerBuilder();

            var actorSystemAdapter = container.Resolve<IActorSystemAdapter>(new TypedParameter(typeof(ActorSystem), system));
            builder.RegisterInstance(actorSystemAdapter).AsImplementedInterfaces().SingleInstance();
            builder.RegisterInstance(system).AsSelf().SingleInstance();

            builder.Update(container);

            ResolveSingletonActors(actorSystemAdapter);
        }
示例#9
0
        public AkkaEventsChronicle(AkkaConfiguration akkaConf)
        {
            _system = akkaConf.CreateSystem();

            _system.AddDependencyResolver(new UnityDependencyResolver(new UnityContainer(), _system));

            _transport = new LocalAkkaEventBusTransport(_system);

            var routingActor =
                _system.ActorOf(Props.Create(() => new LocalSystemRoutingActor(new DefaultHandlerActorTypeFactory(),
                                                                               new LocalAkkaEventBusTransport(_system))));

            var actorLocator = new DefaultAggregateActorLocator();

            Router = new ActorMessagesRouter(routingActor);
        }
示例#10
0
        private static void CreateAndRegisterActors(IContainer container, ActorSystem system)
        {
            var propsResolver = new AutoFacDependencyResolver(container, system);

            system.AddDependencyResolver(propsResolver);

            var builder = new ContainerBuilder();

            var actorSystemAdapter = container.Resolve <IActorSystemAdapter>(new TypedParameter(typeof(ActorSystem), system));

            builder.RegisterInstance(actorSystemAdapter).AsImplementedInterfaces().SingleInstance();
            builder.RegisterInstance(system).AsSelf().SingleInstance();

            builder.Update(container);

            ResolveSingletonActors(actorSystemAdapter);
        }
示例#11
0
        public DotNetCoreDependencyResolver(AkkaServiceProvider container, ActorSystem system)
        {
            if (container == null)
            {
                throw new ArgumentNullException("container");
            }
            if (system == null)
            {
                throw new ArgumentNullException("system");
            }

            Container = container;
            System    = system;

            TypeCache  = new ConcurrentDictionary <string, Type>(StringComparer.InvariantCultureIgnoreCase);
            References = new ConditionalWeakTable <ActorBase, IServiceScope>();

            System.AddDependencyResolver(this);
        }
示例#12
0
        public SimpleInjectorDependencyResolver(Container container, ActorSystem actorSystem)
        {
            if (container == null)
            {
                throw new ArgumentNullException("container");
            }

            if (actorSystem == null)
            {
                throw new ArgumentNullException("actorSystem");
            }

            _container = container;

            _actorSystem = actorSystem;

            _actorSystem.AddDependencyResolver(this);

            _typeCache = new ConcurrentDictionary <string, Type>(StringComparer.InvariantCultureIgnoreCase);

            _references = new ConditionalWeakTable <ActorBase, SI.Scope>();
        }
示例#13
0
 public SimpleInjectorDependencyResolver(Container container, ActorSystem system)
 {
     _container = container;
     _system    = system;
     _system.AddDependencyResolver(this);
 }
 public void RegisterDependencyResolver(ActorSystem actorSystem)
 {
     actorSystem.AddDependencyResolver(new ActorDependencyResolver(actorSystem, serviceProvider));
 }
示例#15
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ServiceProviderDependencyResolver"/> class.
 /// </summary>
 /// <param name="serviceProvider">The container used to resolve references.</param>
 /// <param name="system">The actor system to plug into.</param>
 /// <exception cref="ArgumentNullException">
 /// Either the <paramref name="serviceProvider"/> or the <paramref name="system"/> was null.
 /// </exception>
 public ServiceProviderDependencyResolver(IServiceProvider serviceProvider, ActorSystem system)
 {
     _serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider));
     _system          = system ?? throw new ArgumentNullException(nameof(system));
     _system.AddDependencyResolver(this);
 }
 public void Start()
 {
     system.AddDependencyResolver(resolver); //configure akka to use resolver
 }