'Registers service information to the network with a default TTL
of 60 seconds.  Zeroconf will then respond to requests for
information for that service.  The name of the service may be
changed if needed to make it unique on the network.'

def registerService(self, info, ttl=_DNS_TTL):

    self.checkService(info)
    self.services[info.name.lower()] = info
    self.servicetypes[info.type] = (self.servicetypes.get(info.type, 0) + 1)
    now = currentTimeMillis()
    nextTime = now
    i = 0
    while (i < 3):
        if (now < nextTime):
            self.wait((nextTime - now))
            now = currentTimeMillis()
            continue
        out = DNSOutgoing((_FLAGS_QR_RESPONSE | _FLAGS_AA))
        out.addAnswerAtTime(DNSPointer(info.type, _TYPE_PTR, _CLASS_IN, ttl, info.name), 0)
        out.addAnswerAtTime(DNSService(info.name, _TYPE_SRV, _CLASS_IN, ttl, info.priority, info.weight, info.port, info.server), 0)
        out.addAnswerAtTime(DNSText(info.name, _TYPE_TXT, _CLASS_IN, ttl, info.text), 0)
        if info.address:
            out.addAnswerAtTime(DNSAddress(info.server, info.ip_type, _CLASS_IN, ttl, info.address), 0)
        self.send(out)
        i += 1
        nextTime += _REGISTER_TIME
