/// <summary> /// Creates an enumerator for the current browse position. /// </summary> /// <param name="branches">if set to <c>true</c> then browse branches.</param> /// <returns>The wrapped enumerator.</returns> private EnumString CreateEnumerator(bool branches) { IEnumString unknown = null; string methodName = "IOPCHDA_Browser.GetEnum"; try { IOPCHDA_Browser server = BeginComCall <IOPCHDA_Browser>(methodName, true); OPCHDA_BROWSETYPE browseType = OPCHDA_BROWSETYPE.OPCHDA_ITEMS; if (branches) { browseType = OPCHDA_BROWSETYPE.OPCHDA_BRANCH; } server.GetEnum(browseType, out unknown); } catch (Exception e) { ComCallError(methodName, e); return(null); } finally { EndComCall(methodName); } // wrapper the enumrator. hardcoding a buffer size of 256. return(new EnumString(unknown, 256)); }
//====================================================================== // Construction /// <summary> /// Initializes the object with the specifed COM server. /// </summary> internal Browser(Server server, IOPCHDA_Browser browser, TsCHdaBrowseFilter[] filters, OpcResult[] results) { if (browser == null) { throw new ArgumentNullException(nameof(browser)); } // save the server object that created the browser. m_server = server; // save the COM server (released in Dispose()). m_browser = browser; // save only the filters that were accepted. if (filters != null) { ArrayList validFilters = new ArrayList(); for (int ii = 0; ii < filters.Length; ii++) { if (results[ii].Succeeded()) { validFilters.Add(filters[ii]); } } m_filters = new TsCHdaBrowseFilterCollection(validFilters); } }
internal Browser(Server server, IOPCHDA_Browser browser, BrowseFilter[] filters, ResultID[] results) { if (browser == null) { throw new ArgumentNullException("browser"); } m_server = server; m_browser = browser; if (filters == null) { return; } ArrayList arrayList = new ArrayList(); for (int i = 0; i < filters.Length; i++) { if (results[i].Succeeded()) { arrayList.Add(filters[i]); } } m_filters = new BrowseFilterCollection(arrayList); }
public virtual void Dispose() { lock (this) { this.m_server = null; OpcCom.Interop.ReleaseServer(this.m_browser); this.m_browser = null; } }
protected virtual void Dispose(bool disposing) { if (!m_disposed) { lock (this) { m_server = null; OpcCom.Interop.ReleaseServer(m_browser); m_browser = null; } m_disposed = true; } }
internal Browser(OpcCom.Hda.Server server, IOPCHDA_Browser browser, BrowseFilter[] filters, ResultID[] results) { if (browser == null) { throw new ArgumentNullException("browser"); } this.m_server = server; this.m_browser = browser; if (filters != null) { ArrayList collection = new ArrayList(); for (int i = 0; i < filters.Length; i++) { if (results[i].Succeeded()) { collection.Add(filters[i]); } } this.m_filters = new BrowseFilterCollection(collection); } }
/// <summary> /// Gets the branch position. /// </summary> private string GetBranchPosition(string parentId, string name) { string methodName = "IOPCHDA_Browser.GetBranchPosition"; // need to move down to get the browse position. if (!String.IsNullOrEmpty(name)) { if (!ChangeBrowsePosition(OPCHDA_BROWSEDIRECTION.OPCHDA_BROWSE_DOWN, name)) { return(null); } } string itemId = null; try { IOPCHDA_Browser server = BeginComCall <IOPCHDA_Browser>(methodName, true); server.GetBranchPosition(out itemId); } catch (Exception e) { ComCallError(methodName, e); return(null); } finally { EndComCall(methodName); // restore browse position. if (!String.IsNullOrEmpty(name)) { ChangeBrowsePosition(OPCHDA_BROWSEDIRECTION.OPCHDA_BROWSE_DIRECT, parentId); } } return(itemId); }
/// <summary> /// Gets the item id. /// </summary> /// <param name="name">The name of the item.</param> private string GetItemId(string name) { string methodName = "IOPCHDA_Browser.GetItemID"; string itemId = null; try { IOPCHDA_Browser server = BeginComCall <IOPCHDA_Browser>(methodName, true); server.GetItemID(name, out itemId); } catch (Exception e) { ComCallError(methodName, e); return(null); } finally { EndComCall(methodName); } return(itemId); }
/// <summary> /// Changes the browse position. /// </summary> /// <param name="direction">The direction.</param> /// <param name="itemId">The target.</param> private bool ChangeBrowsePosition(OPCHDA_BROWSEDIRECTION direction, string itemId) { string methodName = "IOPCHDA_Browser.ChangeBrowsePosition"; try { IOPCHDA_Browser server = BeginComCall <IOPCHDA_Browser>(methodName, true); server.ChangeBrowsePosition(direction, itemId); return(true); } catch (Exception e) { if (ComUtils.IsUnknownError(e, ResultIds.E_FAIL)) { ComCallError(methodName, e); } return(false); } finally { EndComCall(methodName); } }