diff --git a/TGS.Interface/Wrappers/IServer.cs b/TGS.Interface/Wrappers/IServer.cs index 130d622ca4..e06e7cb624 100644 --- a/TGS.Interface/Wrappers/IServer.cs +++ b/TGS.Interface/Wrappers/IServer.cs @@ -15,7 +15,7 @@ namespace TGS.Interface.Wrappers new Version Version { get; } /// - /// Get the s the contains that the current user can access + /// Get the s the contains that the current user can access and connect to /// IEnumerable Instances { get; } diff --git a/TGS.Interface/Wrappers/Instance.cs b/TGS.Interface/Wrappers/Instance.cs index 77e304af38..72d9e364b4 100644 --- a/TGS.Interface/Wrappers/Instance.cs +++ b/TGS.Interface/Wrappers/Instance.cs @@ -24,6 +24,9 @@ namespace TGS.Interface.Wrappers { serverInterface = _serverInterface; metadata = _metadata; + if (metadata.Enabled) + //run a connectivity check + serverInterface.GetComponent(metadata.Name).VerifyConnection(); } /// diff --git a/TGS.Interface/Wrappers/Server.cs b/TGS.Interface/Wrappers/Server.cs index 9276c64e88..71b918ffe2 100644 --- a/TGS.Interface/Wrappers/Server.cs +++ b/TGS.Interface/Wrappers/Server.cs @@ -14,10 +14,21 @@ namespace TGS.Interface.Wrappers public IEnumerable Instances { get { lock (this) - if(knownInstances == null) + if (knownInstances == null) knownInstances = serverInterface.GetComponent(null).ListInstances(); - foreach(var I in knownInstances) - yield return new Instance(serverInterface, I); + foreach (var I in knownInstances) + { + IInstance nextInstance; + try + { + nextInstance = new Instance(serverInterface, I); + } + catch + { + continue; + } + yield return nextInstance; + } } }