/// <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)); }
/// <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)); } }