LightNode.Server.OperationHandler.GetDescendingQualityHeaderValues C# (CSharp) Метод

GetDescendingQualityHeaderValues() статический приватный Метод

static private GetDescendingQualityHeaderValues ( string rawHeaders ) : List>
rawHeaders string
Результат List>
        static List<Tuple<int, double, string>> GetDescendingQualityHeaderValues(string[] rawHeaders)
        {
            var list = new List<Tuple<int, double, string>>(rawHeaders.Length);
            var index = 0;
            foreach (var item in rawHeaders)
            {
                var splitted = item.Split(';');
                if (splitted.Length == 1)
                {
                    list.Add(Tuple.Create(index++, 1.0, splitted[0].Trim()));
                }
                else if (splitted.Length == 2)
                {
                    var name = splitted[0].Trim();
                    var rawQ = splitted[1];
                    var q = 1.0;
                    var qSplitted = rawQ.Split('=');
                    if (qSplitted.Length == 2 && qSplitted[0].Trim().Equals("q", StringComparison.OrdinalIgnoreCase) && double.TryParse(qSplitted[1], out q))
                    {
                        list.Add(Tuple.Create(index++, q, name));
                    }
                    else
                    {
                        list.Add(Tuple.Create(index++, 1.0, name));
                    }
                }
            }

            // needs stable sort, compare quality first, second compare index
            list.Sort((a, b) =>
            {
                int c = b.Item2.CompareTo(a.Item2);
                if (c != 0) return c;

                return a.Item1.CompareTo(b.Item1);
            });

            return list;
        }