Exemple #1
0
        protected override void Reconnect(Connection.Base connection)
        {
            if (state == State.RUNNING && connection != null && connection.AutoReconnect)
            {
                if (connection != null && CloseMonitor(connection.Remote))
                {
                    Connect();
                }
                else
                {
                    Type type = connection.GetType();

                    if (typeof(Connection.Tcp).IsAssignableFrom(type))
                    {
                        ConnectTcp(connection.Parameters);
                    }
                    else if (typeof(Connection.Udp).IsAssignableFrom(type))
                    {
                        if (monitors.TryGetValue(connection.Remote, out Connection.Tcp monitor))
                        {
                            ConnectUdp(monitor, connection.Parameters);
                        }
                        else
                        {
                            Debug.LogErrorFormat("No monitor channel with guid '{0}' to reconnect UDP channel {1}", connection.Remote, connection.Channel);
                        }
                    }
                }
            }
        }