util/Zeroconf.py
changeset 1828 396da88d7b5c
parent 1826 91796f408540
equal deleted inserted replaced
1827:b8b47f9b5e56 1828:396da88d7b5c
   901         self.condition.notify()
   901         self.condition.notify()
   902         self.condition.release()
   902         self.condition.release()
   903 
   903 
   904     def delReader(self, socket):
   904     def delReader(self, socket):
   905         self.condition.acquire()
   905         self.condition.acquire()
   906         del(self.readers[socket])
   906         del self.readers[socket]
   907         self.condition.notify()
   907         self.condition.notify()
   908         self.condition.release()
   908         self.condition.release()
   909 
   909 
   910     def notify(self):
   910     def notify(self):
   911         self.condition.acquire()
   911         self.condition.acquire()
   999                 if not expired:
   999                 if not expired:
  1000                     oldrecord.resetTTL(record)
  1000                     oldrecord.resetTTL(record)
  1001                 else:
  1001                 else:
  1002                     def callback(x):
  1002                     def callback(x):
  1003                         return self.listener.removeService(x, self.type, record.alias)
  1003                         return self.listener.removeService(x, self.type, record.alias)
  1004                     del(self.services[record.alias.lower()])
  1004                     del self.services[record.alias.lower()]
  1005                     self.list.append(callback)
  1005                     self.list.append(callback)
  1006                     return
  1006                     return
  1007             except Exception:
  1007             except Exception:
  1008                 if not expired:
  1008                 if not expired:
  1009                     def callback(x):
  1009                     def callback(x):
  1346     def removeServiceListener(self, listener):
  1346     def removeServiceListener(self, listener):
  1347         """Removes a listener from the set that is currently listening."""
  1347         """Removes a listener from the set that is currently listening."""
  1348         for browser in self.browsers:
  1348         for browser in self.browsers:
  1349             if browser.listener == listener:
  1349             if browser.listener == listener:
  1350                 browser.cancel()
  1350                 browser.cancel()
  1351                 del(browser)
  1351                 del browser
  1352 
  1352 
  1353     def registerService(self, info, ttl=_DNS_TTL):
  1353     def registerService(self, info, ttl=_DNS_TTL):
  1354         """Registers service information to the network with a default TTL
  1354         """Registers service information to the network with a default TTL
  1355         of 60 seconds.  Zeroconf will then respond to requests for
  1355         of 60 seconds.  Zeroconf will then respond to requests for
  1356         information for that service.  The name of the service may be
  1356         information for that service.  The name of the service may be
  1376             nextTime += _REGISTER_TIME
  1376             nextTime += _REGISTER_TIME
  1377 
  1377 
  1378     def unregisterService(self, info):
  1378     def unregisterService(self, info):
  1379         """Unregister a service."""
  1379         """Unregister a service."""
  1380         try:
  1380         try:
  1381             del(self.services[info.name.lower()])
  1381             del self.services[info.name.lower()]
  1382         except Exception:
  1382         except Exception:
  1383             pass
  1383             pass
  1384         now = currentTimeMillis()
  1384         now = currentTimeMillis()
  1385         nextTime = now
  1385         nextTime = now
  1386         i = 0
  1386         i = 0
  1428         nextTime = now
  1428         nextTime = now
  1429         i = 0
  1429         i = 0
  1430         while i < 3:
  1430         while i < 3:
  1431             for record in self.cache.entriesWithName(info.type):
  1431             for record in self.cache.entriesWithName(info.type):
  1432                 if record.type == _TYPE_PTR and not record.isExpired(now) and record.alias == info.name:
  1432                 if record.type == _TYPE_PTR and not record.isExpired(now) and record.alias == info.name:
  1433                     if (info.name.find('.') < 0):
  1433                     if info.name.find('.') < 0:
  1434                         info.name = info.name + ".[" + info.address + ":" + info.port + "]." + info.type
  1434                         info.name = info.name + ".[" + info.address + ":" + info.port + "]." + info.type
  1435                         self.checkService(info)
  1435                         self.checkService(info)
  1436                         return
  1436                         return
  1437                     raise NonUniqueNameException
  1437                     raise NonUniqueNameException
  1438             if now < nextTime:
  1438             if now < nextTime: