public static NameAndUid SplitNameAndUid(string name) { var i = name.IndexOf('#'); return i < 0 ? new NameAndUid(name, UndefinedUid) : new NameAndUid(name.Substring(0, i), Int32.Parse(name.Substring(i + 1))); }
public override ActorRef GetChild(IEnumerable <string> name) { var current = (ActorRef)this; var index = 0; foreach (var element in name) { switch (element) { case "..": return(Parent.GetChild(name.Skip(index))); case "": break; default: var nameAndUid = ActorCell.SplitNameAndUid(element); var internalActorRef = Lookup.GetChildByName(nameAndUid.Name); if (internalActorRef.IsNobody()) { return(Nobody); } return(internalActorRef.GetChild(name.Skip(index))); //TODO: Implement this in order to be able to handle restarting children // lookup.getChildByName(childName) match { // case Some(crs: ChildRestartStats) if uid == ActorCell.undefinedUid || uid == crs.uid ⇒ // crs.child.asInstanceOf[InternalActorRef].getChild(name) // case _ ⇒ Nobody // } } index++; } return(current); }