/// <summary> /// Lookup actor /// </summary> /// <param name="actorType">actor type</param> /// <param name="actorKey">actor key</param> /// <param name="actorInstance">return instance</param> /// <returns>true or false</returns> public bool TryGetValue(Type actorType, ActorKey actorKey, out ActorInstance actorInstance) { actorType.VerifyNotNull(nameof(actorType)); actorKey.VerifyNotNull(nameof(actorKey)); lock (_lock) { bool status = _actorCache.TryGetValue(new ActorTypeKey(actorType, actorKey), out actorInstance); _logger.LogTrace($"{nameof(TryGetValue)}: status={status}, actorKey={actorKey}"); return(status); } }
/// <summary> /// Remove actor from container /// </summary> /// <param name="actorType">actor type</param> /// <param name="actorKey">actor key</param> /// <returns>actor registration or null if not exist</returns> public bool TryRemove(Type actorType, ActorKey actorKey, out ActorInstance actorInstance) { actorKey.VerifyNotNull(nameof(actorKey)); lock (_lock) { bool status = _actorCache.TryRemove(new ActorTypeKey(actorType, actorKey), out actorInstance); _logger.LogTrace($"{nameof(TryRemove)}: Removing actor {actorKey}, status={status}"); if (!status) { return(status); } } actorInstance.Instance .Deactivate().GetAwaiter().GetResult(); return(true); }