Beispiel #1
0
 /// <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));
     }
 }
Beispiel #2
0
        /// <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));
            }
        }