public byte[] GetBytes() { List <byte> result = new List <byte>(512); // Add the hostname string hostname = BonjourUtility.FormatLocalHostname(Name); result.AddRange(BonjourUtility.HostnameToBytes(hostname)); // Record Type result.AddNetworkOrderBytes((ushort)Type); // Class and Cache Flush bit ushort rrclass = (ushort)Class; BitUtility.SetBit(ref rrclass, 15, CacheFlush); result.AddNetworkOrderBytes(rrclass); // TTL result.AddNetworkOrderBytes((int)TimeToLive.TotalSeconds); // Data byte[] dataBytes = GetDataBytes(); result.AddNetworkOrderBytes((ushort)dataBytes.Length); result.AddRange(dataBytes); return(result.ToArray()); }
protected override void SetDataFromReader(BinaryReader reader, int length) { Priority = reader.ReadNetworkOrderUInt16(); Weight = reader.ReadNetworkOrderUInt16(); Port = reader.ReadNetworkOrderUInt16(); Target = BonjourUtility.ReadHostnameFromBytes(reader); }
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); }
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); }
public byte[] GetBytes() { List <byte> result = new List <byte>(512); // Add the hostname string hostname = BonjourUtility.FormatLocalHostname(Name); result.AddRange(BonjourUtility.HostnameToBytes(hostname)); // Record Type result.AddNetworkOrderBytes((ushort)Type); // Class result.AddNetworkOrderBytes((ushort)Class); return(result.ToArray()); }
protected override byte[] GetDataBytes() { List <byte> result = new List <byte>(); // Priority result.AddNetworkOrderBytes((ushort)Priority); // Weight result.AddNetworkOrderBytes((ushort)Weight); // Port result.AddNetworkOrderBytes((ushort)Port); // Target result.AddRange(BonjourUtility.HostnameToBytes(Target)); return(result.ToArray()); }
protected override byte[] GetDataBytes() { return(BonjourUtility.GetTXTRecordBytesFromDictionary(Data)); }
protected override void SetDataFromReader(BinaryReader reader, int length) { Data = BonjourUtility.GetDictionaryFromTXTRecordBytes(reader, length); }
protected override byte[] GetDataBytes() { return(BonjourUtility.BytesFromIPAddress(Address)); }
protected override void SetDataFromReader(BinaryReader reader, int length) { Address = BonjourUtility.IPAddressFromBytes(reader.ReadBytes(length)); }
protected override byte[] GetDataBytes() { return(BonjourUtility.HostnameToBytes(BonjourUtility.FormatLocalHostname(DomainName))); }
protected override void SetDataFromReader(BinaryReader reader, int length) { DomainName = BonjourUtility.ReadHostnameFromBytes(reader); }