Exemple #1
0
        public void ReadFromBuffer(byte[] buffer, int startIndex)
        {
            Src = BufferConverter.ToUInt32(buffer, startIndex, true);
            int offset = startIndex + 4;

            while (offset < buffer.Length)
            {
                byte[] value = new byte[buffer[offset + 1]];
                Buffer.BlockCopy(buffer, offset + 2, value, 0, value.Length);
                switch ((SdesItemType)buffer[offset])
                {
                case SdesItemType.CName: cName = value; break;

                case SdesItemType.Name: name = value; break;

                case SdesItemType.Email: email = value; break;

                case SdesItemType.Phone: phone = value; break;

                case SdesItemType.Loc: loc = value; break;

                case SdesItemType.Tool: tool = value; break;

                case SdesItemType.Note: note = value; break;

                case SdesItemType.PrivateExtensions:
                    byte   prefixLength = value[0];
                    string extPrefix    = utf8Encoder.GetString(value, 1, prefixLength);
                    byte[] extValue     = new byte[value.Length - prefixLength - 1];
                    Buffer.BlockCopy(value, 1 + prefixLength, extValue, 0, extValue.Length);
                    PrivateExtensions[extPrefix] = extValue;
                    break;

                default:
                    System.Diagnostics.Debug.WriteLine("Unknown SDES Type " + buffer[offset] + " received.");
                    return;
                }
                offset += 2 + value.Length;
            }
        }