/// <summary> /// Shutdown everything from this node down /// </summary> public Unit Shutdown(bool maintainState) { lock (sync) { if (maintainState == false) { cluster.IfSome(c => { // TODO: Make this transactional // { c.Delete(StateKey); c.Delete(ActorInboxCommon.ClusterUserInboxKey(Id)); c.Delete(ActorInboxCommon.ClusterSystemInboxKey(Id)); c.Delete(ActorInboxCommon.ClusterMetaDataKey(Id)); ActorContext.DeregisterById(Id); // } }); } RemoveAllSubscriptions(); publishSubject.OnCompleted(); stateSubject.OnCompleted(); remoteSubsAcquired = false; strategyState = StrategyState.Empty; DisposeState(); ActorContext.DispatchTerminate(Id); return(unit); } }
/// <summary> /// Shutdown everything from this node down /// </summary> public Unit Shutdown(bool maintainState) { lock (sync) { if (maintainState == false && Flags != ProcessFlags.Default) { cluster.IfSome(c => { // TODO: Make this transactional // { c.DeleteMany( StateKey, ActorInboxCommon.ClusterUserInboxKey(Id), ActorInboxCommon.ClusterSystemInboxKey(Id), ActorInboxCommon.ClusterMetaDataKey(Id), ActorInboxCommon.ClusterSettingsKey(Id)); ActorContext.DeregisterById(Id); // } ProcessConfig.Settings.ClearInMemorySettingsOverride(ActorInboxCommon.ClusterSettingsKey(Id)); }); } RemoveAllSubscriptions(); publishSubject.OnCompleted(); stateSubject.OnCompleted(); remoteSubsAcquired = false; strategyState = StrategyState.Empty; DisposeState(); ActorContext.DispatchTerminate(Id); return(unit); } }