System.Net.Http.Headers.WarningHeaderValue.GetWarningLength C# (CSharp) Method

GetWarningLength() static private method

static private GetWarningLength ( string input, int startIndex, object &parsedValue ) : int
input string
startIndex int
parsedValue object
return int
        internal static int GetWarningLength(string input, int startIndex, out object parsedValue)
        {
            Debug.Assert(startIndex >= 0);

            parsedValue = null;

            if (string.IsNullOrEmpty(input) || (startIndex >= input.Length))
            {
                return 0;
            }

            // Read <code> in '<code> <agent> <text> ["<date>"]'
            int code;
            int current = startIndex;

            if (!TryReadCode(input, ref current, out code))
            {
                return 0;
            }

            // Read <agent> in '<code> <agent> <text> ["<date>"]'
            string agent;
            if (!TryReadAgent(input, current, ref current, out agent))
            {
                return 0;
            }

            // Read <text> in '<code> <agent> <text> ["<date>"]'
            int textLength = 0;
            int textStartIndex = current;
            if (HttpRuleParser.GetQuotedStringLength(input, current, out textLength) != HttpParseResult.Parsed)
            {
                return 0;
            }

            current = current + textLength;

            // Read <date> in '<code> <agent> <text> ["<date>"]'
            DateTimeOffset? date = null;
            if (!TryReadDate(input, ref current, out date))
            {
                return 0;
            }

            WarningHeaderValue result = new WarningHeaderValue();
            result._code = code;
            result._agent = agent;
            result._text = input.Substring(textStartIndex, textLength);
            result._date = date;

            parsedValue = result;
            return current - startIndex;
        }