internal static ActorServiceSettings DeepCopyFromOrDefaultOnNull(ActorServiceSettings other) { var actorServiceSettings = new ActorServiceSettings(); if (other == null) { return(actorServiceSettings); } // deep copy settings. actorServiceSettings.actorGarbageCollectionSettings = new ActorGarbageCollectionSettings(other.actorGarbageCollectionSettings); actorServiceSettings.actorConcurrencySettings = new ActorConcurrencySettings(other.actorConcurrencySettings); return(actorServiceSettings); }
/// <summary> /// Initializes a new instance of the <see cref="ActorService"/> class. /// </summary> /// <param name="context">Service context the actor service is operating under.</param> /// <param name="actorTypeInfo">The type information of the Actor.</param> /// <param name="actorFactory">The factory method to create Actor objects.</param> /// <param name="stateManagerFactory">The factory method to create <see cref="IActorStateManager"/></param> /// <param name="stateProvider">The state provider to store and access the state of the Actor objects.</param> /// <param name="settings">The settings used to configure the behavior of the Actor service.</param> public ActorService( StatefulServiceContext context, ActorTypeInformation actorTypeInfo, Func <ActorService, ActorId, ActorBase> actorFactory = null, Func <ActorBase, IActorStateProvider, IActorStateManager> stateManagerFactory = null, IActorStateProvider stateProvider = null, ActorServiceSettings settings = null) : base( context, stateProvider ?? ActorStateProviderHelper.CreateDefaultStateProvider(actorTypeInfo)) { this.actorTypeInformation = actorTypeInfo; this.stateProvider = (IActorStateProvider)this.StateProviderReplica; this.settings = ActorServiceSettings.DeepCopyFromOrDefaultOnNull(settings); // Set internal components this.actorActivator = new ActorActivator(actorFactory ?? this.DefaultActorFactory); this.stateManagerFactory = stateManagerFactory ?? DefaultActorStateManagerFactory; this.actorManagerAdapter = new ActorManagerAdapter { ActorManager = new MockActorManager(this) }; this.replicaRole = ReplicaRole.Unknown; }