Exemplo n.º 1
0
        /// <summary>
        /// Processes a notification of e-mail information change -- SNAC(18,07)
        /// </summary>
        /// <param name="dp">A <see cref="DataPacket"/> object containing SNAC(18,07)</param>
        public static void ProcessEmailInformation(DataPacket dp)
        {
            // There are 24 bytes of cookies prior to the TLV list, an 8-byte cookie
            // and a 16-byte cookie. The 16 byte cookie is identifying information
            // that may be useful
            byte[] cookie   = dp.Data.ReadByteArray(8);
            byte[] idcookie = dp.Data.ReadByteArray(16);

            TlvBlock tlvs        = new TlvBlock(dp.Data.ReadByteArrayToEnd());
            string   alertTitle  = tlvs.ReadString(0x0005, Encoding.ASCII);
            string   url         = tlvs.ReadString(0x0007, Encoding.ASCII);
            string   alertUrl    = tlvs.ReadString(0x000D, Encoding.ASCII);
            ushort   numMessages = tlvs.ReadUshort(0x0080);
            byte     unread      = tlvs.ReadByte(0x0081);

            if (unread == 0)
            {
                numMessages = 0;
            }
            string domain = tlvs.ReadString(0x0082, Encoding.ASCII);
            ushort flags  = tlvs.ReadUshort(0x0084);

            if (numMessages == 0xFFFF)
            {
                // If this message was received, at least one email message is available
                // even if TLV 0x0080 wasn't in the message
                numMessages = 1;
            }
        }