'Register 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
    if (info.type in self.servicetypes):
        self.servicetypes[info.type] += 1
    else:
        self.servicetypes[info.type] = 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, _TYPE_A, _CLASS_IN, ttl, info.address), 0)
        self.send(out)
        i += 1
        nextTime += _REGISTER_TIME
