public doPublish(PublishMessageType[] PublishMessageContainer) { this.PublishMessageContainer = PublishMessageContainer; }
private Message GetPublishMessage(PublishMessageType type) { Message message = new Message(); ResourceRecord record; // This message is a response message.QueryResponse = true; // This is an authoritative response message.AuthoritativeAnswer = true; // SRV Record record = new SRVRecord() { TimeToLive = (type == PublishMessageType.Stop) ? TimeSpan.Zero : BroadcastTTL, CacheFlush = true, Name = FullServiceInstanceName, Target = Hostname, Port = Port, }; message.AnswerRecords.Add(record); // TXT Record if (TXTRecordData != null && TXTRecordData.Count > 0) { record = new TXTRecord() { TimeToLive = (type == PublishMessageType.Stop) ? TimeSpan.Zero : BroadcastTTL, CacheFlush = true, Name = FullServiceInstanceName, Data = TXTRecordData, }; message.AnswerRecords.Add(record); } // PTR Record for DNS-SD Service Type Enumeration if (type == PublishMessageType.Normal) { record = new PTRRecord() { TimeToLive = BroadcastTTL, Name = BonjourUtility.DNSSDServiceTypeEnumerationName, DomainName = Type, }; message.AnswerRecords.Add(record); } // Service PTR Record if (type != PublishMessageType.Initial) { record = new PTRRecord() { TimeToLive = (type == PublishMessageType.Stop) ? TimeSpan.Zero : BroadcastTTL, Name = Type, DomainName = FullServiceInstanceName, }; message.AnswerRecords.Add(record); } // A Records if (type != PublishMessageType.Stop) { foreach (var ip in IPAddresses) { record = new ARecord() { TimeToLive = BroadcastTTL, CacheFlush = true, Name = Hostname, Address = ip, }; message.AdditionalRecords.Add(record); } } return(message); }