Beispiel #1
0
        private string TranslateToManifestConvention(string eventMessage, string evtName)
        {
            StringBuilder stringBuilder = (StringBuilder)null;
            int           writtenSoFar  = 0;
            int           i             = 0;

            while (i < eventMessage.Length)
            {
                if ((int)eventMessage[i] == 37)
                {
                    ManifestBuilder.UpdateStringBuilder(ref stringBuilder, eventMessage, writtenSoFar, i - writtenSoFar);
                    stringBuilder.Append("%%");
                    ++i;
                    writtenSoFar = i;
                }
                else if (i < eventMessage.Length - 1 && ((int)eventMessage[i] == 123 && (int)eventMessage[i + 1] == 123 || (int)eventMessage[i] == 125 && (int)eventMessage[i + 1] == 125))
                {
                    ManifestBuilder.UpdateStringBuilder(ref stringBuilder, eventMessage, writtenSoFar, i - writtenSoFar);
                    stringBuilder.Append(eventMessage[i]);
                    ++i;
                    ++i;
                    writtenSoFar = i;
                }
                else if ((int)eventMessage[i] == 123)
                {
                    int num1 = i;
                    ++i;
                    int idx = 0;
                    int num2;
                    for (; i < eventMessage.Length && char.IsDigit(eventMessage[i]); i = num2 + 1)
                    {
                        idx  = idx * 10 + (int)eventMessage[i] - 48;
                        num2 = i;
                    }
                    if (i < eventMessage.Length && (int)eventMessage[i] == 125)
                    {
                        ++i;
                        ManifestBuilder.UpdateStringBuilder(ref stringBuilder, eventMessage, writtenSoFar, num1 - writtenSoFar);
                        int manifestConvention = this.TranslateIndexToManifestConvention(idx, evtName);
                        stringBuilder.Append('%').Append(manifestConvention);
                        if (i < eventMessage.Length && (int)eventMessage[i] == 33)
                        {
                            ++i;
                            stringBuilder.Append("%!");
                        }
                        writtenSoFar = i;
                    }
                    else
                    {
                        this.ManifestError(Environment.GetResourceString("EventSource_UnsupportedMessageProperty", (object)evtName, (object)eventMessage), false);
                    }
                }
                else
                {
                    int index;
                    if ((index = "&<>'\"\r\n\t".IndexOf(eventMessage[i])) >= 0)
                    {
                        string[] strArray = new string[8] {
                            "&amp;", "&lt;", "&gt;", "&apos;", "&quot;", "%r", "%n", "%t"
                        };
                        ((Action <char, string>)((ch, escape) =>
                        {
                            ManifestBuilder.UpdateStringBuilder(ref stringBuilder, eventMessage, writtenSoFar, i - writtenSoFar);
                            ++i;
                            stringBuilder.Append(escape);
                            writtenSoFar = i;
                        }))(eventMessage[i], strArray[index]);
                    }
                    else
                    {
                        ++i;
                    }
                }
            }
            if (stringBuilder == null)
            {
                return(eventMessage);
            }
            ManifestBuilder.UpdateStringBuilder(ref stringBuilder, eventMessage, writtenSoFar, i - writtenSoFar);
            return(stringBuilder.ToString());
        }