示例#1
0
        /// <summary>
        /// Sends an asynchronous request to read the attributes of an item.
        /// </summary>
        /// <param name="startTime">The beginning of the history period to read.</param>
        /// <param name="endTime">The end of the history period to be read.</param>
        /// <param name="item">The item to read (must include the server handle).</param>
        /// <param name="attributeIDs">The attributes to read.</param>
        /// <param name="requestHandle">An identifier for the request assigned by the caller.</param>
        /// <param name="callback">A delegate used to receive notifications when the request completes.</param>
        /// <param name="request">An object that contains the state of the request (used to cancel the request).</param>
        /// <returns>A set of results containing any errors encountered when the server validated the attribute ids.</returns>
        public ResultCollection ReadAttributes(
            Time startTime,
            Time endTime,
            ItemIdentifier item,
            int[]                      attributeIDs,
            object requestHandle,
            ReadAttributesEventHandler callback,
            out IRequest request)
        {
            if (m_server == null)
            {
                throw new NotConnectedException();
            }

            ResultCollection results = ((IServer)m_server).ReadAttributes(
                startTime,
                endTime,
                item,
                attributeIDs,
                requestHandle,
                callback,
                out request);

            return(results);
        }
        /// <summary>
        /// Invokes callback for a read attributes request.
        /// </summary>
        private bool InvokeCallback(ReadAttributesEventHandler callback, object results)
        {
            // check for valid result type.
            if (!typeof(ItemAttributeCollection).IsInstanceOfType(results))
            {
                return(false);
            }

            ItemAttributeCollection values = (ItemAttributeCollection)results;

            // update item handles and actual times.
            UpdateResults(new ItemAttributeCollection[] { values });

            try
            {
                callback(this, values);
            }
            catch
            {
                // ignore exceptions in the callbacks.
            }

            // request always completes
            return(true);
        }
示例#3
0
        private bool InvokeCallback(ReadAttributesEventHandler callback, object results)
        {
            if (!typeof(ItemAttributeCollection).IsInstanceOfType(results))
            {
                return(false);
            }
            ItemAttributeCollection attributes = (ItemAttributeCollection)results;

            this.UpdateResults(new ItemAttributeCollection[] { attributes });
            try
            {
                callback(this, attributes);
            }
            catch
            {
            }
            return(true);
        }
示例#4
0
        /// <summary>
        /// Starts an asynchronous read attributes at specific times request for an item.
        /// </summary>
        public ResultCollection ReadAttributes(
            ItemIdentifier item,
            int[]                      attributeIDs,
            object requestHandle,
            ReadAttributesEventHandler callback,
            out IRequest request)
        {
            ResultCollection results = m_server.ReadAttributes(
                StartTime,
                EndTime,
                item,
                attributeIDs,
                requestHandle,
                callback,
                out request);

            return(results);
        }
示例#5
0
 public ResultCollection ReadAttributes(ItemIdentifier item, int[] attributeIDs, object requestHandle, ReadAttributesEventHandler callback, out IRequest request)
 {
     return(this.m_server.ReadAttributes(this.StartTime, this.EndTime, item, attributeIDs, requestHandle, callback, out request));
 }