Terrarium.PeerToPeer.NetworkEngine.GetAllPeersFromConfig C# (CSharp) Method

GetAllPeersFromConfig() static private method

static private GetAllPeersFromConfig ( string channel ) : DataSet
channel string
return System.Data.DataSet
        internal static DataSet GetAllPeersFromConfig(string channel)
        {
            var peerList = GameConfig.PeerList;

            var data = new DataSet {Locale = CultureInfo.InvariantCulture};

            var peerTable = data.Tables.Add("Peers");
            peerTable.Columns.Add("IPAddress", typeof (String));
            peerTable.Columns.Add("Lease", typeof (DateTime));

            // The string needs to be Channel,IP,Channel,IP, etc.
            var peers = peerList.Split(',');
            for (var i = 0; i < peers.Length; i += 2)
            {
                if (peers[i].Trim().ToLower(CultureInfo.InvariantCulture) ==
                    channel.ToLower(CultureInfo.InvariantCulture) ||
                    peers[i].Trim().ToLower(CultureInfo.InvariantCulture) == "all")
                {
                    var row = peerTable.NewRow();

                    // If we get a bad format in the config file, we should throw an exception so that the
                    // discovery engine shows red.  having a 0.0.0.0 should count as a problem since it
                    // will teleport locally
                    if (IPAddress.Parse(peers[i + 1].Trim()).ToString() == "0.0.0.0")
                    {
                        throw new ApplicationException("An IP Address in the config file resolved to 0.0.0.0");
                    }

                    row["IPAddress"] = peers[i + 1].Trim();
                    row["Lease"] = DateTime.Now.AddDays(5);
                    // make it expire in 5 days from now, so it is always different, and always far away
                    peerTable.Rows.Add(row);
                }
            }

            return data;
        }