예제 #1
0
            MessageFilteringResult IFiltersListBulkProcessing.ProcessMessage(IMessage msg, int?startFromChar)
            {
                MessageFilteringResult?candidate = null;

                for (int i = 0; i < filters.Length; ++i)
                {
                    var f = filters[i];
                    var m = f.Key.Match(msg, startFromChar);
                    if (m != null)
                    {
                        var result = new MessageFilteringResult()
                        {
                            Action       = f.Value.Action,
                            Filter       = f.Value,
                            MatchedRange = m
                        };
                        if (startFromChar == null)
                        {
                            return(result);
                        }
                        if (candidate == null || m.Value.MatchBegin < candidate.Value.MatchedRange.Value.MatchBegin)
                        {
                            candidate = result;
                        }
                    }
                }

                if (candidate != null)
                {
                    return(candidate.Value);
                }

                return(new MessageFilteringResult()
                {
                    Action = defaultAction,
                });
            }
예제 #2
0
 public SearchResultMessage(IMessage msg, MessageFilteringResult filteringResult)
 {
     Message         = msg;
     FilteringResult = filteringResult;
 }