コード例 #1
0
ファイル: ActorGrain.cs プロジェクト: nuspect/Orleankka
        /// <summary>
        /// Run-once initialization routine invoked right after actor grain construction and just before activate
        /// TODO: this is not ideal since IActorRuntime cannot be created here. Still, need support for IActivationFilter from Orleans
        /// </summary>
        internal virtual void Initialize(IServiceProvider services, string id)
        {
            var clusterSystem = services.GetRequiredService <ClusterActorSystem>();

            System = clusterSystem;

            var implementation = clusterSystem.ImplementationOf(GetType());

            middleware = implementation.Middleware;

            Path = ActorPath.For(implementation.Interface, id);
        }
コード例 #2
0
ファイル: ActorGrain.cs プロジェクト: gansuranga/Orleankka
        public override Task OnActivateAsync()
        {
            var system = ServiceProvider.GetRequiredService <ClusterActorSystem>();

            var implementation = system.ImplementationOf(GetType());

            middleware = implementation.Middleware;

            Path    = ActorPath.For(implementation.Interface, this.GetPrimaryKeyString());
            Runtime = new ActorRuntime(system, this);

            return(middleware.Receive(this, Activate.Message, Receive));
        }
コード例 #3
0
 /// <summary>
 /// Registers type-based actor middleware (interceptor).
 /// The middleware is inherited by all subclasses.
 /// </summary>
 /// <param name="type">The actor type (could be the base class)</param>
 /// <param name="middleware">The middleware.</param>
 public OrleankkaClusterOptions ActorMiddleware(Type type, IActorMiddleware middleware)
 {
     pipeline.Register(type, middleware);
     return(this);
 }
コード例 #4
0
 /// <summary>
 /// Registers global actor middleware (interceptor). This middleware will be used for every actor
 /// which doesn't specify an individual middleware via call to <see cref="ActorMiddleware(Type,IActorMiddleware) "/>.
 /// </summary>
 /// <param name="global">The middleware.</param>
 public OrleankkaClusterOptions ActorMiddleware(IActorMiddleware global)
 {
     pipeline.Register(global);
     return(this);
 }
コード例 #5
0
 public ActorGrainImplementation(Type type, IActorMiddleware middleware)
 {
     Middleware = middleware;
     Interface  = InterfaceOf(type);
 }
コード例 #6
0
 internal ClusterActorSystem(Assembly[] assemblies, IServiceProvider serviceProvider)
     : base(assemblies, serviceProvider)
 {
     this.actorMiddleware = serviceProvider.GetService <IActorMiddleware>() ?? DefaultActorMiddleware.Instance;
     Register(assemblies);
 }
コード例 #7
0
ファイル: ActorMiddleware.cs プロジェクト: stantoxt/Orleankka
 protected ActorMiddleware(IActorMiddleware next = null) =>
 this.next = next ?? DefaultActorMiddleware.Instance;
コード例 #8
0
ファイル: ActorMiddleware.cs プロジェクト: nuspect/Orleankka
 protected ActorMiddleware(IActorMiddleware next = null) =>