private bool ApplyBrowseFilters(
IReference reference,
BrowseDirection browseDirection,
NodeId referenceTypeId,
bool includeSubtypes)
{
// check browse direction.
if (reference.IsInverse)
{
if (browseDirection == BrowseDirection.Forward)
{
return false;
}
}
else
{
if (browseDirection == BrowseDirection.Inverse)
{
return false;
}
}
// check reference type filter.
if (!NodeId.IsNull(referenceTypeId))
{
if (reference.ReferenceTypeId != referenceTypeId)
{
if (includeSubtypes)
{
if (m_server.TypeTree.IsTypeOf(reference.ReferenceTypeId, referenceTypeId))
{
return true;
}
}
return false;
}
}
// include reference for now.
return true;
}
#endregion