Opc.Ua.BaseVariableTypeState.ReadValueAttribute C# (CSharp) Method

ReadValueAttribute() protected method

Reads the value for the value attribute.
protected ReadValueAttribute ( ISystemContext context, NumericRange indexRange, Opc.Ua.QualifiedName dataEncoding, object &value, System.DateTime &sourceTimestamp ) : ServiceResult
context ISystemContext
indexRange NumericRange
dataEncoding Opc.Ua.QualifiedName
value object
sourceTimestamp System.DateTime
return ServiceResult
        protected override ServiceResult ReadValueAttribute(
            ISystemContext context,
            NumericRange indexRange,
            QualifiedName dataEncoding,
            ref object value,
            ref DateTime sourceTimestamp)
        {  
            value = m_value;

            ServiceResult result = ServiceResult.Good;

            VariableCopyPolicy copyPolicy = VariableCopyPolicy.CopyOnRead;

            // use default behavoir.
            if (OnSimpleReadValue != null)
            {
                result = OnSimpleReadValue(
                    context,
                    this,
                    ref value);

                if (ServiceResult.IsBad(result))
                {
                    return result;
                }

                copyPolicy = VariableCopyPolicy.Never;
            }
            else
            {
                // check if a valid value exists.
                if (value == null)
                {
                    return StatusCodes.BadAttributeIdInvalid;
                }
            }
            
            // apply the index range and encoding.
            result = BaseVariableState.ApplyIndexRangeAndDataEncoding(context, indexRange, dataEncoding, ref value);

            if (ServiceResult.IsBad(result))
            {
                return result;
            }

            // copy returned value.
            if (copyPolicy == VariableCopyPolicy.CopyOnRead)
            {
                value = Utils.Clone(value);
            }

            return result;
        }
        #endregion