コード例 #1
0
ファイル: RR.cs プロジェクト: zhouDongXing/xmpp
 ///<summary>
 ///</summary>
 ///<param name="rr"></param>
 public RR(RecordReader rr)
 {
     TimeLived = 0;
     Name      = rr.ReadDomainName();
     Type      = (Type)rr.ReadUInt16();
     Class     = (Class)rr.ReadUInt16();
     TTL       = rr.ReadUInt32();
     RDLENGTH  = rr.ReadUInt16();
     Record    = rr.ReadRecord(Type);
     Record.RR = this;
 }
コード例 #2
0
ファイル: Response.cs プロジェクト: Cotoff/xmpp
        ///<summary>
        ///</summary>
        ///<param name="iPEndPoint"></param>
        ///<param name="data"></param>
        public Response(IPEndPoint iPEndPoint, byte[] data)
        {
            Error = "";
            Server = iPEndPoint;
            TimeStamp = DateTime.Now;
            MessageSize = data.Length;
            var rr = new RecordReader(data);

            Questions = new List<Question>();
            Answers = new List<AnswerRR>();
            Authorities = new List<AuthorityRR>();
            Additionals = new List<AdditionalRR>();

            Header = new Header(rr);

            for (var intI = 0; intI < Header.QDCOUNT; intI++)
            {
                Questions.Add(new Question(rr));
            }

            for (var intI = 0; intI < Header.ANCOUNT; intI++)
            {
                Answers.Add(new AnswerRR(rr));
            }

            for (var intI = 0; intI < Header.NSCOUNT; intI++)
            {
                Authorities.Add(new AuthorityRR(rr));
            }
            for (var intI = 0; intI < Header.ARCOUNT; intI++)
            {
                Additionals.Add(new AdditionalRR(rr));
            }
        }
コード例 #3
0
ファイル: Header.cs プロジェクト: sstraus/xmpp
 ///<summary>
 ///</summary>
 ///<param name="rr"></param>
 public Header(RecordReader rr)
 {
     ID = rr.ReadUInt16();
     _flags = rr.ReadUInt16();
     QDCOUNT = rr.ReadUInt16();
     ANCOUNT = rr.ReadUInt16();
     NSCOUNT = rr.ReadUInt16();
     ARCOUNT = rr.ReadUInt16();
 }
コード例 #4
0
 ///<summary>
 ///</summary>
 ///<param name="rr"></param>
 public Question(RecordReader rr)
 {
     QName  = rr.ReadDomainName();
     QType  = (QType)rr.ReadUInt16();
     QClass = (QClass)rr.ReadUInt16();
 }
コード例 #5
0
ファイル: RR.cs プロジェクト: zhouDongXing/xmpp
 ///<summary>
 ///</summary>
 ///<param name="br"></param>
 public AdditionalRR(RecordReader br)
     : base(br)
 {
 }
コード例 #6
0
ファイル: RR.cs プロジェクト: zhouDongXing/xmpp
 ///<summary>
 ///</summary>
 ///<param name="br"></param>
 public AuthorityRR(RecordReader br)
     : base(br)
 {
 }
コード例 #7
0
ファイル: RR.cs プロジェクト: zhouDongXing/xmpp
 ///<summary>
 ///</summary>
 ///<param name="br"></param>
 public AnswerRR(RecordReader br)
     : base(br)
 {
 }
コード例 #8
0
ファイル: Question.cs プロジェクト: sstraus/xmpp
 ///<summary>
 ///</summary>
 ///<param name="rr"></param>
 public Question(RecordReader rr)
 {
     QName = rr.ReadDomainName();
     QType = (QType) rr.ReadUInt16();
     QClass = (QClass) rr.ReadUInt16();
 }
コード例 #9
0
ファイル: RecordReader.cs プロジェクト: sstraus/xmpp
        ///<summary>
        ///</summary>
        ///<returns></returns>
        public string ReadDomainName()
        {
            var name = new StringBuilder();
            int length;

            // get  the length of the first label
            while ((length = ReadByte()) != 0)
            {
                // top 2 bits set denotes domain name compression and to reference elsewhere
                if ((length & 0xc0) == 0xc0)
                {
                    // work out the existing domain name, copy this pointer
                    var newRecordReader = new RecordReader(_mData, (length & 0x3f) << 8 | ReadByte());

                    name.Append(newRecordReader.ReadDomainName());
                    return name.ToString();
                }

                // if not using compression, copy a char at a time to the domain name
                while (length > 0)
                {
                    name.Append(ReadChar());
                    length--;
                }
                name.Append('.');
            }
            return name.Length == 0 ? "." : name.ToString();
        }
コード例 #10
0
ファイル: RR.cs プロジェクト: sstraus/xmpp
 ///<summary>
 ///</summary>
 ///<param name="br"></param>
 public AnswerRR(RecordReader br)
     : base(br)
 {
 }
コード例 #11
0
ファイル: RR.cs プロジェクト: sstraus/xmpp
 ///<summary>
 ///</summary>
 ///<param name="br"></param>
 public AdditionalRR(RecordReader br)
     : base(br)
 {
 }
コード例 #12
0
ファイル: RR.cs プロジェクト: sstraus/xmpp
 ///<summary>
 ///</summary>
 ///<param name="rr"></param>
 public RR(RecordReader rr)
 {
     TimeLived = 0;
     Name = rr.ReadDomainName();
     Type = (Type) rr.ReadUInt16();
     Class = (Class) rr.ReadUInt16();
     TTL = rr.ReadUInt32();
     RDLENGTH = rr.ReadUInt16();
     Record = rr.ReadRecord(Type);
     Record.RR = this;
 }
コード例 #13
0
ファイル: RR.cs プロジェクト: sstraus/xmpp
 ///<summary>
 ///</summary>
 ///<param name="br"></param>
 public AuthorityRR(RecordReader br)
     : base(br)
 {
 }