Beispiel #1
0
 protected override void SetDataFromReader(BinaryReader reader, int length)
 {
     Priority = reader.ReadNetworkOrderUInt16();
     Weight   = reader.ReadNetworkOrderUInt16();
     Port     = reader.ReadNetworkOrderUInt16();
     Target   = BonjourUtility.ReadHostnameFromBytes(reader);
 }
Beispiel #2
0
        public static Question FromBinaryReader(BinaryReader reader)
        {
            Question question = new Question();

            question.Name  = BonjourUtility.ReadHostnameFromBytes(reader);
            question.Type  = (ResourceRecordType)reader.ReadNetworkOrderUInt16();
            question.Class = reader.ReadNetworkOrderUInt16();

            return(question);
        }
Beispiel #3
0
        public static ResourceRecord FromBinaryReader(BinaryReader reader)
        {
            // Hostname
            string hostname = BonjourUtility.ReadHostnameFromBytes(reader);

            // Record Type
            ResourceRecordType type = (ResourceRecordType)reader.ReadNetworkOrderUInt16();

            ResourceRecord record;

            switch (type)
            {
            case ResourceRecordType.A:
                record = new ARecord();
                break;

            case ResourceRecordType.PTR:
                record = new PTRRecord();
                break;

            case ResourceRecordType.SRV:
                record = new SRVRecord();
                break;

            case ResourceRecordType.TXT:
                record = new TXTRecord();
                break;

            default:
                record      = new ResourceRecord();
                record.Type = type;
                break;
            }

            record.Name = hostname;

            // Class and Cache Flush bit
            ushort rrclass = reader.ReadNetworkOrderUInt16();

            record.Class      = (rrclass & 0x7fff);
            record.CacheFlush = rrclass.GetBit(15);

            // TTL
            record.TimeToLive = TimeSpan.FromSeconds(reader.ReadNetworkOrderInt32());

            // Data
            ushort dataLength = reader.ReadNetworkOrderUInt16();

            record.SetDataFromReader(reader, dataLength);

            return(record);
        }
Beispiel #4
0
 protected override void SetDataFromReader(BinaryReader reader, int length)
 {
     DomainName = BonjourUtility.ReadHostnameFromBytes(reader);
 }