Ejemplo n.º 1
0
        static IMessage MakeMessageInternal(
            TextMessageCapture capture,
            IRegex headRe,
            IRegex bodyRe,
            ref IMatch bodyMatch,
            FieldsProcessor.IFieldsProcessor fieldsProcessor,
            FieldsProcessor.MakeMessageFlags makeMessageFlags,
            DateTime sourceTime,
            ITimeOffsets timeOffsets,
            MessagesBuilderCallback threadLocalCallbackImpl
            )
        {
            if (bodyRe != null)
            {
                if (!bodyRe.Match(capture.BodyBuffer, capture.BodyIndex, capture.BodyLength, ref bodyMatch))
                {
                    return(null);
                }
            }

            int idx = 0;

            Group[] groups;

            fieldsProcessor.Reset();
            fieldsProcessor.SetSourceTime(sourceTime);
            fieldsProcessor.SetPosition(capture.BeginPosition);
            fieldsProcessor.SetTimeOffsets(timeOffsets);

            groups = capture.HeaderMatch.Groups;
            for (int i = 1; i < groups.Length; ++i)
            {
                var g = groups[i];
                fieldsProcessor.SetInputField(idx++, new StringSlice(capture.HeaderBuffer, g.Index, g.Length));
            }

            if (bodyRe != null)
            {
                groups = bodyMatch.Groups;
                for (int i = 1; i < groups.Length; ++i)
                {
                    var g = groups[i];
                    fieldsProcessor.SetInputField(idx++, new StringSlice(capture.BodyBuffer, g.Index, g.Length));
                }
            }
            else
            {
                fieldsProcessor.SetInputField(idx++, new StringSlice(capture.BodyBuffer, capture.BodyIndex, capture.BodyLength));
            }

            threadLocalCallbackImpl.SetCurrentPosition(capture.BeginPosition, capture.EndPosition);
            threadLocalCallbackImpl.SetRawText(StringSlice.Concat(capture.MessageHeaderSlice, capture.MessageBodySlice).Trim());

            var ret = fieldsProcessor.MakeMessage(threadLocalCallbackImpl, makeMessageFlags);

            return(ret);
        }
Ejemplo n.º 2
0
 protected static FieldsProcessor.MakeMessageFlags ParserFlagsToMakeMessageFlags(MessagesParserFlag flags)
 {
     FieldsProcessor.MakeMessageFlags ret = FieldsProcessor.MakeMessageFlags.Default;
     if ((flags & MessagesParserFlag.HintMessageTimeIsNotNeeded) != 0)
     {
         ret |= FieldsProcessor.MakeMessageFlags.HintIgnoreTime;
     }
     if ((flags & MessagesParserFlag.HintMessageContentIsNotNeeed) != 0)
     {
         ret |= (FieldsProcessor.MakeMessageFlags.HintIgnoreBody | FieldsProcessor.MakeMessageFlags.HintIgnoreEntryType
                 | FieldsProcessor.MakeMessageFlags.HintIgnoreSeverity | FieldsProcessor.MakeMessageFlags.HintIgnoreThread);
     }
     return(ret);
 }
Ejemplo n.º 3
0
            public override async Task ParserCreated(CreateParserParams p)
            {
                await base.ParserCreated(p);

                flags = ParserFlagsToMakeMessageFlags(p.Flags);
            }
Ejemplo n.º 4
0
 public abstract IMessage MakeMessage(FieldsProcessor.IMessagesBuilderCallback callback, FieldsProcessor.MakeMessageFlags flags);
Ejemplo n.º 5
0
 public override void ParserCreated(CreateParserParams p)
 {
     base.ParserCreated(p);
     flags = ParserFlagsToMakeMessageFlags(p.Flags);
 }