Avalon.Network.PacketReader.ReadUTF8StringSafe C# (CSharp) Method

ReadUTF8StringSafe() public method

public ReadUTF8StringSafe ( ) : string
return string
        public string ReadUTF8StringSafe()
        {
            if (m_Index >= m_Size)
                return String.Empty;

            int count = 0;
            int index = m_Index;

            while (index < m_Size && m_Data[index++] != 0)
                ++count;

            index = 0;

            byte[] buffer = new byte[count];
            int value = 0;

            while (m_Index < m_Size && (value = m_Data[m_Index++]) != 0)
                buffer[index++] = (byte)value;

            string s = UTF8.GetString(buffer);

            bool isSafe = true;

            for (int i = 0; isSafe && i < s.Length; ++i)
                isSafe = IsSafeChar((int)s[i]);

            if (isSafe)
                return s;

            StringBuilder sb = new StringBuilder(s.Length);

            for (int i = 0; i < s.Length; ++i)
            {
                if (IsSafeChar((int)s[i]))
                    sb.Append(s[i]);
            }

            return sb.ToString();
        }

Same methods

PacketReader::ReadUTF8StringSafe ( int fixedLength ) : string