protected override void DoWaitForCompleteStop() { foreach (var mbox in m_Mailboxes) { mbox.Dispose(); } foreach (var subs in m_Subscriptions) { subs.Dispose(); } m_Mailboxes.Clear(); m_Subscriptions.Clear(); m_Map = null; var node = ErlApp.Node; if (node != null) { node.NodeStatusChange -= node_NodeStatusChange; node.Disconnect(m_RemoteName); } lock (s_Nodes) s_Nodes.Remove(m_RemoteName.ValueAsString); }
private void reconnectNode() { var correlate = Guid.NewGuid(); App.Log.Write(new Log.Message { Type = Log.MessageType.Error, Topic = CoreConsts.ERLANG_TOPIC, From = GetType().Name + "m_ErlNode.OnNodeStatus()", Text = "Node status is down: " + m_RemoteName.Value, RelatedTo = correlate }); m_Map = null; try { var map = Map; } catch (Exception error) { App.Log.Write(new Log.Message { Type = Log.MessageType.Error, Topic = CoreConsts.ERLANG_TOPIC, From = GetType().Name + "m_ErlNode.OnNodeStatus()", Text = "Attempt to re-connect leaked: " + error.ToMessageWithType(), Exception = error, RelatedTo = correlate }); asyncReconnect(); } }