Пример #1
0
        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);
        }
Пример #2
0
        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();
            }
        }