예제 #1
0
            /// <summary>
            /// Check that the event matches the filter.
            /// </summary>
            public bool Satisfied(Event ev)
            {
                // if filtering only by channel numbers is used, CnlNums should not be null
                if (Filters == EventFilters.Cnls)
                {
                    // quick check by channel numbers only
                    return(CnlNums.Contains(ev.CnlNum));
                }

                // complete filter condition check
                return
                    ((!Filters.HasFlag(EventFilters.Obj) || ObjNum == ev.ObjNum) &&
                     (!Filters.HasFlag(EventFilters.KP) || KPNum == ev.KPNum) &&
                     (!Filters.HasFlag(EventFilters.Param) || ParamID > 0 && ParamID == ev.ParamID ||
                      ParamIDs != null && ParamIDs.Contains(ev.ParamID)) &&
                     (!Filters.HasFlag(EventFilters.Cnls) || CnlNums != null && CnlNums.Contains(ev.CnlNum)) &&
                     (!Filters.HasFlag(EventFilters.Stat) || Statuses != null && Statuses.Contains(ev.NewCnlStat)) &&
                     (!Filters.HasFlag(EventFilters.Ack) || Checked == ev.Checked));
            }
예제 #2
0
 /// <summary>
 /// Проверить, что событие удовлетворяет фильтру
 /// </summary>
 public bool Satisfied(Event ev)
 {
     // если используется фильтр только по номерам каналов, CnlNums должно быть не равно null
     if (Filters == EventFilters.Cnls)
     {
         // быстрая проверка только по номерам каналов
         return(CnlNums.Contains(ev.CnlNum));
     }
     else
     {
         // полная проверка условий фильтра
         return
             ((!Filters.HasFlag(EventFilters.Obj) || ObjNum == ev.ObjNum) &&
              (!Filters.HasFlag(EventFilters.KP) || KPNum == ev.KPNum) &&
              (!Filters.HasFlag(EventFilters.Param) || ParamID > 0 && ParamID == ev.ParamID ||
               ParamIDs != null && ParamIDs.Contains(ev.ParamID)) &&
              (!Filters.HasFlag(EventFilters.Cnls) || CnlNums != null && CnlNums.Contains(ev.CnlNum)) &&
              (!Filters.HasFlag(EventFilters.Stat) || Statuses != null && Statuses.Contains(ev.NewCnlStat)) &&
              (!Filters.HasFlag(EventFilters.Ack) || Checked == ev.Checked));
     }
 }