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); } } } } }