Opc.Ua.Com.Server.ComNamespaceMapper.GetLocalBrowseName C# (CSharp) Method

GetLocalBrowseName() public method

Gets the local name for the qualified name,
public GetLocalBrowseName ( QualifiedName browseName ) : string
browseName QualifiedName The remote qualified name.
return string
        public string GetLocalBrowseName(QualifiedName browseName)
        {
            if (QualifiedName.IsNull(browseName))
            {
                return String.Empty;
            }

            ushort namespaceIndex = GetLocalNamespaceIndex(browseName.NamespaceIndex);
            string name = browseName.Name;

            int index = name.IndexOfAny(s_BrowseNameEscapedChars);

            if (index != -1)
            {
                StringBuilder buffer = new StringBuilder(name.Length);
                buffer.Append(namespaceIndex);
                buffer.Append(':');
                
                for (int ii = 0; ii < name.Length; ii++)
                {
                    if (IsEscapedChar(name[ii]))
                    {
                        buffer.AppendFormat("{0:X2}", (int)name[ii]);
                    }
                    else
                    {
                        buffer.Append(name[ii]);
                    }
                }

                return buffer.ToString();
            }

            // check if the namespace index changed.
            if (browseName.NamespaceIndex != namespaceIndex)
            {
                browseName = new QualifiedName(browseName.Name, namespaceIndex);
            }

            return browseName.ToString();
        }

Usage Example

コード例 #1
0
ファイル: ComAeUtils.cs プロジェクト: OPCFoundation/UA-.NET
        /// <summary>
        /// Collects instance declarations nodes from with a type.
        /// </summary>
        public static void CollectInstanceDeclarations(
            Session session,
            ComNamespaceMapper mapper,
            NodeState node,
            AeEventAttribute parent,
            List<AeEventAttribute> instances,
            IDictionary<string, AeEventAttribute> map)
        {
            List<BaseInstanceState> children = new List<BaseInstanceState>();
            node.GetChildren(session.SystemContext, children);
            
            if (children.Count == 0)
            {
                return;
            }

            // process the children.
            for (int ii = 0; ii < children.Count; ii++)
            {
                BaseInstanceState instance = children[ii];

                // only interested in objects and variables.
                if (instance.NodeClass != NodeClass.Object && instance.NodeClass != NodeClass.Variable)
                {
                    return;
                }

                // ignore instances without a modelling rule.
                if (NodeId.IsNull(instance.ModellingRuleId))
                {
                    return;
                }

                // create a new declaration.
                AeEventAttribute declaration = new AeEventAttribute();

                declaration.RootTypeId = (parent != null)?parent.RootTypeId:node.NodeId;
                declaration.NodeId = (NodeId)instance.NodeId;
                declaration.BrowseName = instance.BrowseName;
                declaration.NodeClass = instance.NodeClass;
                declaration.Description = (instance.Description != null)?instance.Description.ToString():null;
                
                // get data type information.
                BaseVariableState variable = instance as BaseVariableState;
 
                if (variable != null)
                {
                    declaration.DataType = variable.DataType;
                    declaration.ValueRank = variable.ValueRank;

                    if (!NodeId.IsNull(variable.DataType))
                    {
                        declaration.BuiltInType = DataTypes.GetBuiltInType(declaration.DataType, session.TypeTree);
                    }
                }

                if (!LocalizedText.IsNullOrEmpty(instance.DisplayName))
                {
                    declaration.DisplayName = instance.DisplayName.Text;
                }
                else
                {
                    declaration.DisplayName = instance.BrowseName.Name;
                }

                if (parent != null)
                {
                    declaration.BrowsePath = new QualifiedNameCollection(parent.BrowsePath);
                    declaration.BrowsePathDisplayText = Utils.Format("{0}/{1}", parent.BrowsePathDisplayText, mapper.GetLocalBrowseName(instance.BrowseName));
                    declaration.DisplayPath = Utils.Format("{0}/{1}", parent.DisplayPath, instance.DisplayName);
                }
                else
                {
                    declaration.BrowsePath = new QualifiedNameCollection();
                    declaration.BrowsePathDisplayText = Utils.Format("{0}", instance.BrowseName);
                    declaration.DisplayPath = Utils.Format("{0}", instance.DisplayName);
                }

                declaration.BrowsePath.Add(instance.BrowseName);

                // check if reading an overridden declaration.
                AeEventAttribute overriden = null;

                if (map.TryGetValue(declaration.BrowsePathDisplayText, out overriden))
                {
                    declaration.OverriddenDeclaration = overriden;
                }

                map[declaration.BrowsePathDisplayText] = declaration;

                // only interested in variables.
                if (instance.NodeClass == NodeClass.Variable)
                {
                    instances.Add(declaration);
                }

                // recusively build tree.
                CollectInstanceDeclarations(session, mapper, instance, declaration, instances, map);
            }
        }
All Usage Examples Of Opc.Ua.Com.Server.ComNamespaceMapper::GetLocalBrowseName