예제 #1
0
        public virtual Service CreateFromFile()
        {
            var serviceFile = LoadServiceFile();
            if (serviceFile == null)
                return null;

            var service = serviceFile.Element("service");
            if (service == null)
                return null;

            var nameValue = service.Attribute("name");
            if (nameValue == null)
                return null;

            var domainValue = service.Attribute("domain");
            var domain = "local.";
            if (domainValue != null) {
                domain = domainValue.Value;
            }

            var typeValue = service.Attribute("type");
            string type;
            if (typeValue == null) {
                var fileName = Path.GetFileNameWithoutExtension(ServiceFile);
                type = string.Format("_{0}._tcp", fileName);
            }
            else {
                type = typeValue.Value;
            }

            var portValue = service.Attribute("port");
            if (portValue == null) return null;

            short port;
            if (!short.TryParse(portValue.Value, out port)) {
                port = 0;
            }

            var newService = new Service {
                Name = nameValue.Value,
                Type = type,
                Port = port,
                Domain = domain
            };

            var records = service.Elements("record").ToList();

            foreach (var record in records) {
                var txtValue = record.Attribute("name");
                if(txtValue == null) continue;

                var recordName = txtValue.Value;
                var recordValue = record.Value;

                newService.Records.Add(new TxtRecord {
                    Name = recordName,
                    Value = recordValue
                });
            }

            return newService;
        }
예제 #2
0
 protected bool Equals(Service other)
 {
     return string.Equals(Type, other.Type) && string.Equals(Domain, other.Domain);
 }