/// <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); }
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)); }
/// <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); }
/// <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); }
public ActorGrainImplementation(Type type, IActorMiddleware middleware) { Middleware = middleware; Interface = InterfaceOf(type); }
internal ClusterActorSystem(Assembly[] assemblies, IServiceProvider serviceProvider) : base(assemblies, serviceProvider) { this.actorMiddleware = serviceProvider.GetService <IActorMiddleware>() ?? DefaultActorMiddleware.Instance; Register(assemblies); }
protected ActorMiddleware(IActorMiddleware next = null) => this.next = next ?? DefaultActorMiddleware.Instance;
protected ActorMiddleware(IActorMiddleware next = null) =>