// Token: 0x06000354 RID: 852 RVA: 0x00008AA0 File Offset: 0x00007AA0 public ComplexItem[] GetTypeConversions(Da.Server server) { if (this.m_unconvertedItemID != null || this.m_unfilteredItemID != null) { return(null); } BrowsePosition browsePosition = null; ComplexItem[] result; try { BrowseFilters browseFilters = new BrowseFilters(); browseFilters.ElementNameFilter = "CPX"; browseFilters.BrowseFilter = browseFilter.branch; browseFilters.ReturnAllProperties = false; browseFilters.PropertyIDs = null; browseFilters.ReturnPropertyValues = false; BrowseElement[] array = server.Browse(this, browseFilters, out browsePosition); if (array == null || array.Length == 0) { result = null; } else { if (browsePosition != null) { browsePosition.Dispose(); browsePosition = null; } ItemIdentifier itemID = new ItemIdentifier(array[0].ItemPath, array[0].ItemName); browseFilters.ElementNameFilter = null; browseFilters.BrowseFilter = browseFilter.item; browseFilters.ReturnAllProperties = false; browseFilters.PropertyIDs = ComplexItem.CPX_PROPERTIES; browseFilters.ReturnPropertyValues = true; array = server.Browse(itemID, browseFilters, out browsePosition); if (array == null || array.Length == 0) { result = new ComplexItem[0]; } else { ArrayList arrayList = new ArrayList(array.Length); foreach (BrowseElement browseElement in array) { if (browseElement.Name != "DataFilters") { ComplexItem complexItem = new ComplexItem(); if (complexItem.Init(browseElement)) { complexItem.GetDataFilterItem(server); arrayList.Add(complexItem); } } } result = (ComplexItem[])arrayList.ToArray(typeof(ComplexItem)); } } } finally { if (browsePosition != null) { browsePosition.Dispose(); browsePosition = null; } } return(result); }
/// <summary> /// Fetches the set of type conversions from the server. /// </summary> public ComplexItem[] GetTypeConversions(Opc.Da.Server server) { // only the root item can have type conversions. if (m_unconvertedItemID != null || m_unfilteredItemID != null) { return(null); } BrowsePosition position = null; try { // look for the 'CPX' branch. BrowseFilters filters = new BrowseFilters(); filters.ElementNameFilter = CPX_BRANCH; filters.BrowseFilter = browseFilter.branch; filters.ReturnAllProperties = false; filters.PropertyIDs = null; filters.ReturnPropertyValues = false; BrowseElement[] elements = server.Browse(this, filters, out position); // nothing found. if (elements == null || elements.Length == 0) { return(null); } // release the browse position object. if (position != null) { position.Dispose(); position = null; } // browse for type conversions. ItemIdentifier itemID = new ItemIdentifier(elements[0].ItemPath, elements[0].ItemName); filters.ElementNameFilter = null; filters.BrowseFilter = browseFilter.item; filters.ReturnAllProperties = false; filters.PropertyIDs = CPX_PROPERTIES; filters.ReturnPropertyValues = true; elements = server.Browse(itemID, filters, out position); // nothing found. if (elements == null || elements.Length == 0) { return(new ComplexItem[0]); } // contruct an array of complex data items for each available conversion. ArrayList conversions = new ArrayList(elements.Length); foreach (BrowseElement element in elements) { if (element.Name != CPX_DATA_FILTERS) { ComplexItem item = new ComplexItem(); if (item.Init(element)) { // check if data filters supported for type conversion. item.GetDataFilterItem(server); conversions.Add(item); } } } // return the set of available conversions. return((ComplexItem[])conversions.ToArray(typeof(ComplexItem))); } finally { if (position != null) { position.Dispose(); position = null; } } }