/// <summary>
 /// Adds the provided items to the subscription.
 /// </summary>
 /// <param name="items">The items <see cref="OpcDa::ItemResult"/>.</param>
 /// <returns>
 /// Array of <see cref="ItemResult"/> with results
 /// </returns>
 internal OpcDa::ItemResult[] AddItems(OpcDa::Item[] items)
 {
     if (Tag != null)
     {
         Tag.SetResultFilters((int)OpcDa.ResultFilter.All); //TODO clean up ResultFilter usage
         return(Tag.AddItems(items));
     }
     else
     {
         OpcDa::ItemResult[] res = new OpcDa::ItemResult[items.Length];
         for (int ix = 0; ix < items.Length; ix++)
         {
             res[ix] = new OpcDa::ItemResult(items[ix])
             {
                 ResultID = Opc.ResultID.S_OK
             }
         }
         ;
         return(res);
     }
 }
        /// <summary>
        /// Returns the value of the specified field.
        /// </summary>
        private object GetFieldValue(OpcDa::ItemResult item, int fieldID)
        {
            object fieldValue = null;

            switch (fieldID)
            {
            case ITEM_NAME: { return(item.ItemName); }

            case ITEM_PATH: { return(item.ItemPath); }

            // case CLIENT_HANDLE:    { return Opc.Convert.ToString(item.ClientHandle); }
            // case SERVER_HANDLE:    { return Opc.Convert.ToString(item.ServerHandle); }
            case DEADBAND: { return((item.DeadbandSpecified) ? item.Deadband : fieldValue); }

            case SAMPLING_RATE: { return((item.SamplingRateSpecified) ? item.SamplingRate : fieldValue); }

            case ENABLE_BUFFERING: { return((item.EnableBufferingSpecified) ? item.EnableBuffering : fieldValue); }

            case ERROR: { return(GetErrorText(item.ResultID)); }
            }
            return(null);
        }