public int[] SetAttributeFilter(uint[] attributeIds, int[] operators, object[] values)
{
int[] errors = new int[attributeIds.Length];
for (int ii = 0; ii < attributeIds.Length; ii++)
{
// check for supported attribute.
if (!m_server.IsSupportedAttribute(attributeIds[ii]))
{
errors[ii] = ResultIds.E_UNKNOWNATTRID;
continue;
}
// only support filters on display name.
if (attributeIds[ii] != OpcRcw.Hda.Constants.OPCHDA_ITEMID)
{
errors[ii] = ResultIds.W_NOFILTER;
continue;
}
// must be a string.
if (!(values[ii] is string))
{
errors[ii] = ResultIds.E_INVALIDDATATYPE;
continue;
}
// create the filter.
ItemNameFilter filter = new ItemNameFilter();
filter.Operator = operators[ii];
filter.Value = (string)values[ii];
if (m_filters == null)
{
m_filters = new List<ItemNameFilter>();
}
m_filters.Add(filter);
errors[ii] = ResultIds.S_OK;
}
return errors;
}