Remove server pinging.

This commit is contained in:
Paul Chote
2013-05-04 22:03:15 +12:00
parent d7eac12d64
commit c0d50c2ac1
3 changed files with 1 additions and 87 deletions

View File

@@ -67,33 +67,5 @@ namespace OpenRA.Network
return UsefulMods.All(m => Game.CurrentMods.ContainsKey(m.Key) return UsefulMods.All(m => Game.CurrentMods.ContainsKey(m.Key)
&& AreVersionsCompatible(m.Value, Game.CurrentMods[m.Key].Version)); && AreVersionsCompatible(m.Value, Game.CurrentMods[m.Key].Version));
} }
public int Latency = -1;
bool hasBeenPinged;
public void Ping()
{
if (!hasBeenPinged)
{
hasBeenPinged = true;
var pingSender = new Ping();
pingSender.PingCompleted += new PingCompletedEventHandler(pongRecieved);
AutoResetEvent waiter = new AutoResetEvent(false);
pingSender.SendAsync(Address.Split(':')[0], waiter);
}
}
void pongRecieved(object sender, PingCompletedEventArgs e)
{
if (e.Cancelled || e.Error != null)
Latency = -1;
else
{
PingReply pong = e.Reply;
if (pong != null && pong.Status == IPStatus.Success)
Latency = (int)pong.RoundtripTime;
else
Latency = -1;
}
}
} }
} }

View File

@@ -26,7 +26,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
Action OpenLobby; Action OpenLobby;
Action OnExit; Action OnExit;
enum SearchStatus { Fetching, Failed, NoGames, Hidden, Pinging } enum SearchStatus { Fetching, Failed, NoGames, Hidden }
SearchStatus searchStatus = SearchStatus.Fetching; SearchStatus searchStatus = SearchStatus.Fetching;
bool showWaiting = true; bool showWaiting = true;
@@ -41,7 +41,6 @@ namespace OpenRA.Mods.RA.Widgets.Logic
case SearchStatus.Fetching: return "Fetching game list..."; case SearchStatus.Fetching: return "Fetching game list...";
case SearchStatus.Failed: return "Failed to contact master server."; case SearchStatus.Failed: return "Failed to contact master server.";
case SearchStatus.NoGames: return "No games found."; case SearchStatus.NoGames: return "No games found.";
case SearchStatus.Pinging: return "Pinging compatible servers.";
default: return ""; default: return "";
} }
} }
@@ -59,14 +58,6 @@ namespace OpenRA.Mods.RA.Widgets.Logic
refreshButton.IsDisabled = () => searchStatus == SearchStatus.Fetching; refreshButton.IsDisabled = () => searchStatus == SearchStatus.Fetching;
refreshButton.OnClick = () => ServerList.Query(games => RefreshServerList(panel, games)); refreshButton.OnClick = () => ServerList.Query(games => RefreshServerList(panel, games));
var pingButton = panel.GetOrNull<ButtonWidget>("PING_BUTTON");
if (pingButton != null)
{
pingButton.IsDisabled = () => searchStatus == SearchStatus.Pinging ||
searchStatus == SearchStatus.Fetching || searchStatus == SearchStatus.Failed;
pingButton.OnClick = () => ServerList.Query(games => PingServerList(panel, games));
}
var join = panel.Get<ButtonWidget>("JOIN_BUTTON"); var join = panel.Get<ButtonWidget>("JOIN_BUTTON");
join.IsDisabled = () => currentServer == null || !currentServer.CanJoin(); join.IsDisabled = () => currentServer == null || !currentServer.CanJoin();
join.OnClick = () => Join(currentServer); join.OnClick = () => Join(currentServer);
@@ -169,33 +160,6 @@ namespace OpenRA.Mods.RA.Widgets.Logic
return s.UsefulMods.Select(m => GenerateModLabel(m)).JoinWith("\n"); return s.UsefulMods.Select(m => GenerateModLabel(m)).JoinWith("\n");
} }
static string GetPing(GameServer s)
{
if (s.Latency > -1)
return "Ping: {0} ms".F(s.Latency);
else
return "Ping: ? ms";
}
void PingServerList(Widget panel, IEnumerable<GameServer> games)
{
searchStatus = SearchStatus.Pinging;
foreach (var loop in games.Where(g => g.CanJoin()))
{
var game = loop;
if (game == null)
continue;
game.Ping();
}
searchStatus = SearchStatus.Hidden;
RefreshServerList(panel, games);
}
bool Filtered(GameServer game) bool Filtered(GameServer game)
{ {
if ((game.State == (int)ServerState.GameStarted) && !showStarted) if ((game.State == (int)ServerState.GameStarted) && !showStarted)
@@ -274,13 +238,6 @@ namespace OpenRA.Mods.RA.Widgets.Logic
version.GetText = () => GenerateModsLabel(game); version.GetText = () => GenerateModsLabel(game);
version.IsVisible = () => !game.CompatibleVersion(); version.IsVisible = () => !game.CompatibleVersion();
var ping = item.GetOrNull<LabelWidget>("PING");
if (ping != null)
{
ping.GetText = () => GetPing(game);
ping.IsVisible = () => game.CompatibleVersion();
}
if (!canJoin) if (!canJoin)
{ {
title.GetColor = () => Color.Gray; title.GetColor = () => Color.Gray;
@@ -289,8 +246,6 @@ namespace OpenRA.Mods.RA.Widgets.Logic
state.GetColor = () => Color.Gray; state.GetColor = () => Color.Gray;
ip.GetColor = () => Color.Gray; ip.GetColor = () => Color.Gray;
version.GetColor = () => Color.Gray; version.GetColor = () => Color.Gray;
if (ping != null)
ping.GetColor = () => Color.Gray;
} }
if (!Filtered(game)) if (!Filtered(game))

View File

@@ -95,12 +95,6 @@ Background@JOINSERVER_BG:
Y:40 Y:40
Align:Right Align:Right
Height:25 Height:25
Label@PING:
Width:140
X:PARENT_RIGHT-150
Y:40
Align:Right
Height:25
Label@PROGRESS_LABEL: Label@PROGRESS_LABEL:
X:(PARENT_RIGHT - WIDTH) / 2 X:(PARENT_RIGHT - WIDTH) / 2
Y:PARENT_BOTTOM / 2 - HEIGHT Y:PARENT_BOTTOM / 2 - HEIGHT
@@ -115,13 +109,6 @@ Background@JOINSERVER_BG:
Height:25 Height:25
Text:Refresh Text:Refresh
Font:Bold Font:Bold
Button@PING_BUTTON:
X:140
Y:PARENT_BOTTOM - 45
Width:100
Height:25
Text:Ping
Font:Bold
Button@JOIN_BUTTON: Button@JOIN_BUTTON:
X:PARENT_RIGHT - 140 - 130 X:PARENT_RIGHT - 140 - 130
Y:PARENT_BOTTOM - 45 Y:PARENT_BOTTOM - 45