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

GetRemoteBrowseName() public method

Gets the remote qualified name for the local name.
public GetRemoteBrowseName ( string browseName ) : QualifiedName
browseName string The local qualified name.
return QualifiedName
        public QualifiedName GetRemoteBrowseName(string browseName)
        {
            // check for null.
            if (String.IsNullOrEmpty(browseName))
            {
                return QualifiedName.Null;
            }

            // parse the browse name.
            QualifiedName qname = QualifiedName.Parse(browseName);

            // construct the qualified name with the remote index.
            ushort namespaceIndex = GetRemoteNamespaceIndex(qname.NamespaceIndex);

            // unescape any special characters in name.
            string name = qname.Name;
            int index = name.IndexOf('%');

            if (index != -1)
            {
                StringBuilder buffer = new StringBuilder(name.Length);

                for (int ii = 0; ii < name.Length; ii++)
                {
                    if (name[ii] == '%')
                    {
                        int code = 0;

                        if (ii < name.Length-2)
                        {
                            int ch = ToHexDigit(name[ii+1]);

                            if (ch > 0)
                            {
                                code = ch * 16;
                                ch = ToHexDigit(name[ii+2]);

                                if (ch > 0)
                                {
                                    code += ch;
                                    buffer.Append((char)code);
                                    continue;
                                }
                            }
                        }
                    }

                    buffer.Append(name[ii]);
                }

                return new QualifiedName(buffer.ToString(), namespaceIndex);
            }

            // check if no translation required.
            if (qname.NamespaceIndex == namespaceIndex)
            {
                return qname;
            }

            // return a new name.
            return new QualifiedName(qname.Name, namespaceIndex);
        }