public static SplitNameAndUid ( string name ) : NameAndUid | ||
name | string | |
return | NameAndUid |
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); }