protected override IPeeringResult PeerChild(IDipNode child) { if (child.Role.HasFlag(DipRole.RemoteTerminal)) { return(PeeringFailure(child, new InvalidOperationException("Local nodes cannot directly peer with remote terminals"))); } var result = child.PeerParentAsync(this).Result; return(new PeeringResult(result.PeeringState, child, result.Exception)); }
protected override IPeeringResult PeerChild(IDipNode child) { if (child.Role == DipRole.HostNetwork || child.Role == DipRole.RemoteNetwork) { var result = child.PeerParentAsync(this).Result; return(new PeeringResult(result.PeeringState, child)); } else { return(PeeringFailure(child, new InvalidOperationException("Global node cannot have parent node"))); } }
protected override IPeeringResult PeerChild(IDipNode child) { if (child.Role.HasFlag(DipRole.Local) || child.Role.HasFlag(DipRole.Host)) { var result = child.PeerParentAsync(this).Result; return(new PeeringResult(result.PeeringState, child, result.Exception)); } else { return(PeeringFailure(child, new InvalidOperationException("Localhost Network may only parent local and host nodes."))); } }
private void SuccessfullyPeerRouterWithChild(LocalRouter router, IDipNode node) { var result = node.PeerParentAsync(router).Result; Assert.AreEqual(PeeringState.Connected, result.PeeringState); }