private bool IsRootAlive() { //ping to root try { ss.Ping(); //Console.WriteLine("ROOT IS ALIVE"); return(true); } catch (Exception e) { //Console.WriteLine("DEAD: {0}", Server.AllServers[i].UID.AbsoluteUri); Console.WriteLine(); //Console.WriteLine("ROOT IS DEAD, PRESS <ENTER> TO SEARCH FOR A NEW SERVER"); //Console.WriteLine(e); RemotingServices.Disconnect(cs); //STATE_CLIENT = STATE_CLIENT_ROOT_DISCOVER; //SearchForRootServer(); //Falta implementar um timeout Provavelmente //break; } return(false); }
public static void Ping_All_Servers() { serversAlive.Clear(); foreach (EachServer s in AllServers) { if (s.id != MyID) { IServerServices sd = (IServerServices)Activator.GetObject(typeof(IServerServices), s.uid.ToString() + "MyRemoteObjectName"); try { sd.Ping(); if (!serversAlive.Contains(s)) { serversAlive.Add(s); } Console.WriteLine("The server {0} is alive", s.uid.ToString()); } catch { Console.WriteLine("The server {0} is dead", s.uid.ToString()); } } } }