2014-05-30 18:23:04 +00:00
|
|
|
|
using System.Collections.Generic;
|
2014-05-19 17:28:17 +00:00
|
|
|
|
using System.Linq;
|
|
|
|
|
using log4net;
|
2014-05-30 18:27:58 +00:00
|
|
|
|
using NPSharp.Master.Data;
|
2014-05-19 17:28:17 +00:00
|
|
|
|
|
|
|
|
|
namespace NPSharp.Master.Messages.Client
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
2014-05-30 18:27:58 +00:00
|
|
|
|
/// Represents a request message for the master server for a standard dedicated server list.
|
2014-05-19 17:28:17 +00:00
|
|
|
|
/// </summary>
|
|
|
|
|
[MasterClientMessage("getservers")]
|
|
|
|
|
public class MasterGetServersMessage : MasterClientMessage
|
|
|
|
|
{
|
|
|
|
|
private static readonly ILog Log;
|
|
|
|
|
|
|
|
|
|
static MasterGetServersMessage()
|
|
|
|
|
{
|
|
|
|
|
Log = LogManager.GetLogger(typeof (MasterGetServersMessage));
|
2014-05-30 18:27:58 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// The game for which servers should be fetched
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string GameName { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// The protocol version of the dedicated servers to search for
|
|
|
|
|
/// </summary>
|
|
|
|
|
public uint ProtocolVersion { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Extra keywords to take care of when generating the server list
|
|
|
|
|
/// </summary>
|
|
|
|
|
public List<MasterGetServersKeywords> Keywords { get; set; }
|
2014-05-19 17:28:17 +00:00
|
|
|
|
|
|
|
|
|
protected override string Serialize()
|
|
|
|
|
{
|
2014-05-30 18:27:58 +00:00
|
|
|
|
return string.Format("{0} {1} {2} {3}", Name, GameName, ProtocolVersion,
|
2014-07-05 16:44:37 +00:00
|
|
|
|
string.Join(" ", Keywords.Distinct().Select(k => k.ToString()))).TrimEnd();
|
2014-05-19 17:28:17 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void Deserialize(string[] arguments)
|
|
|
|
|
{
|
|
|
|
|
GameName = arguments[0];
|
|
|
|
|
ProtocolVersion = uint.Parse(arguments[1]);
|
|
|
|
|
foreach (var kw in arguments.Skip(2))
|
|
|
|
|
{
|
|
|
|
|
switch (kw.ToLower())
|
|
|
|
|
{
|
|
|
|
|
case "empty":
|
|
|
|
|
Keywords.Add(MasterGetServersKeywords.Empty);
|
|
|
|
|
break;
|
|
|
|
|
case "full":
|
|
|
|
|
Keywords.Add(MasterGetServersKeywords.Full);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
Log.WarnFormat("{0}: weird keyword {1}", Name, kw);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|