/// <summary> /// Used to break all known links to this mbox /// </summary> internal void BreakLinks(ErlAtom reason) { foreach (var l in m_Links.Clear()) { m_Node.Deliver(ErlMsg.Exit(m_Self, l.Pid, reason)); } }
/// <summary> /// Used to break all known links to this mbox /// </summary> internal void BreakLinks(ErlAtom fromNode, IErlObject reason) { var links = m_Links.Remove(fromNode); foreach (var link in links) { if (link.HasPid) { m_Node.Deliver(ErlMsg.Exit(m_Self, link.Pid, reason)); } else { m_Node.Deliver(new ErlConnectionException(fromNode, reason)); } } foreach (var m in m_Monitors.Where(o => o.Value.Node == fromNode) .Where(m => m_Monitors.Remove(m.Key))) { Deliver(new ErlConnectionException(fromNode, reason)); } }