Opc.Ua.Com.Server.ComDaBrowseCache.GetPropertyValue C# (CSharp) Method

GetPropertyValue() private method

Gets the property value from the browse element.
private GetPropertyValue ( BrowseElement element, int propertyId ) : DaValue
element BrowseElement The element.
propertyId int The property id.
return DaValue
        private DaValue GetPropertyValue(BrowseElement element, int propertyId)
        {
            DaValue value = new DaValue();
            value.Quality = OpcRcw.Da.Qualities.OPC_QUALITY_GOOD;
            value.Timestamp = element.CacheTimestamp;

            // check for objects - they only support the description property.
            if (element.NodeClass == NodeClass.Object)
            {
                switch (propertyId)
                {
                    case PropertyIds.Description: { value.Value = element.BrowseName; break; }
                    case PropertyIds.UaBrowseName: { value.Value = element.UaBrowseName; break; }
                    case PropertyIds.UaDescription: { value.Value = element.UaDescription; break; }

                    default:
                    {
                        value.Error = ResultIds.E_INVALID_PID;
                        return value;
                    }
                }

                return value;
            }

            // handle variable properties.
            switch (propertyId)
            {
                case PropertyIds.Description: { value.Value = element.BrowseName; break; }
                case PropertyIds.DataType: { value.Value = element.CanonicalDataType; break; }
                case PropertyIds.ScanRate: { value.Value = element.ScanRate; break; }
                case PropertyIds.AccessRights: { value.Value = element.AccessRights; break; }
                case PropertyIds.EuType: { value.Value = element.EuType; break; }
                case PropertyIds.EuInfo: { value.Value = element.EuInfo; break; }
                case PropertyIds.UaBuiltInType: { value.Value = (int)element.BuiltInType; break; }
                case PropertyIds.UaDataTypeId: { value.Value = element.DataTypeId; break; }
                case PropertyIds.UaValueRank: { value.Value = element.ValueRank; break; }
                case PropertyIds.UaBrowseName: { value.Value = element.UaBrowseName; break; }
                case PropertyIds.UaDescription: { value.Value = element.UaDescription; break; }

                case PropertyIds.EngineeringUnits:
                {
                    if (element.EngineeringUnits == null)
                    {
                        value.Error = ResultIds.E_INVALID_PID;
                        break;
                    }

                    value.Value = element.EngineeringUnits;
                    value.Value = element.EngineeringUnits;
                    break;
                }

                case PropertyIds.HighEU: 
                {
                    if (element.HighEU == Double.MaxValue)
                    {
                        value.Error = ResultIds.E_INVALID_PID;
                        break;
                    }

                    value.Value = element.HighEU;
                    break;
                }

                case PropertyIds.LowEU:
                {
                    if (element.LowEU == Double.MaxValue)
                    {
                        value.Error = ResultIds.E_INVALID_PID;
                        break;
                    }

                    value.Value = element.LowEU;
                    break;
                }

                case PropertyIds.HighIR:
                {
                    if (element.HighIR == Double.MaxValue)
                    {
                        value.Error = ResultIds.E_INVALID_PID;
                        break;
                    }

                    value.Value = element.HighIR;
                    break;
                }

                case PropertyIds.LowIR:
                {
                    if (element.LowIR == Double.MaxValue)
                    {
                        value.Error = ResultIds.E_INVALID_PID;
                        break;
                    }

                    value.Value = element.LowIR;
                    break;
                }

                case PropertyIds.CloseLabel:
                {
                    if (element.CloseLabel == null)
                    {
                        value.Error = ResultIds.E_INVALID_PID;
                        break;
                    }

                    value.Value = element.CloseLabel;
                    break;
                }

                case PropertyIds.OpenLabel:
                {
                    if (element.OpenLabel == null)
                    {
                        value.Error = ResultIds.E_INVALID_PID;
                        break;
                    }

                    value.Value = element.OpenLabel;
                    break;
                }

                case PropertyIds.TimeZone:
                {
                    if (element.TimeZone == Int32.MaxValue)
                    {
                        value.Error = ResultIds.E_INVALID_PID;
                        break;
                    }

                    value.Value = element.TimeZone;
                    break;
                }
                
                case PropertyIds.Value:
                {
                    if (element.LastValue == null)
                    {
                        value.Error = ResultIds.E_INVALID_PID;
                        break;
                    }

                    value.Value = element.LastValue.Value;
                    break;
                }

                case PropertyIds.Quality:
                {
                    if (element.LastValue == null)
                    {
                        value.Error = ResultIds.E_INVALID_PID;
                        break;
                    }

                    value.Value = element.LastValue.Quality;
                    break;
                }

                case PropertyIds.Timestamp:
                {
                    if (element.LastValue == null)
                    {
                        value.Error = ResultIds.E_INVALID_PID;
                        break;
                    }

                    value.Value = element.LastValue.Timestamp;
                    break;
                }

                default:
                {
                    value.Error = ResultIds.E_INVALID_PID;
                    break;
                }
            }

            return value;
        }