Exemplo n.º 1
0
        /// <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));
        }
Exemplo n.º 2
0
        //======================================================================
        // 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);
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
 public virtual void Dispose()
 {
     lock (this)
     {
         this.m_server = null;
         OpcCom.Interop.ReleaseServer(this.m_browser);
         this.m_browser = null;
     }
 }
Exemplo n.º 5
0
        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;
            }
        }
Exemplo n.º 6
0
 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);
     }
 }
Exemplo n.º 7
0
        /// <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);
        }
Exemplo n.º 8
0
        /// <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);
        }
Exemplo n.º 9
0
        /// <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);
            }
        }