X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-python%2Favahi%2FServiceTypeDatabase.py.in;h=8ad8d5edbd91ce21b9a467ee7b3e6bcb06313c74;hb=0458aec3b31f7a5c73bab74f131914249c8dd6f6;hp=9caeebd91cd74ca9cdd17743a6c306baa862c8a0;hpb=ced0d86acf70f435ffdadb794db891be63a5b82a;p=catta diff --git a/avahi-python/avahi/ServiceTypeDatabase.py.in b/avahi-python/avahi/ServiceTypeDatabase.py.in index 9caeebd..8ad8d5e 100644 --- a/avahi-python/avahi/ServiceTypeDatabase.py.in +++ b/avahi-python/avahi/ServiceTypeDatabase.py.in @@ -1,7 +1,5 @@ #!@PYTHON@ # -*-python-*- -# $Id$ - # This file is part of avahi. # # avahi is free software; you can redistribute it and/or modify it @@ -19,16 +17,18 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 # USA. -import gdbm +import @DBM@ import locale +import re locale.setlocale(locale.LC_ALL, '') class ServiceTypeDatabase: + """ServiceTypeDatabase maps service types to descriptions""" - def __init__(self, filename = "@pkgdatadir@/service-types.db"): + def __init__(self, filename = "@pkglibdir@/service-types.db"): - self.db = gdbm.open(filename, "r") + self.db = @DBM@.open(filename, "r") l = locale.getlocale(locale.LC_MESSAGES) @@ -65,6 +65,10 @@ class ServiceTypeDatabase: raise KeyError() + def items(self): + + return list(self.iteritems()) + def has_key(self, key): for suffix in self.suffixes: @@ -84,14 +88,74 @@ class ServiceTypeDatabase: return False + def __iter__(self): + + @FIRST_KEY@ + @CHECK_KEY@ + + if re.search('_[a-zA-Z0-9-]+\._[a-zA-Z0-9-]+', key) and not re.search('_[a-zA-Z0-9-]+\._[a-zA-Z0-9-]+\[.*\]', key): + yield key + + @NEXT_KEY@ + + def __len__(self): + + count = 0 + for _ in self: + + count+=1 + + self.__len__ = lambda : count + return len(self) + + def get(self, key, default=None): + + if key in self: + return self[key] + else: + return default + + def iteritems(self): + + return ((key, self[key]) for key in self) + + def iterkeys(self): + + return self.__iter__() + + def itervalues(self): + + return (self[key] for key in self) + + def keys(self): + + return list(self) + + def values(self): + + return list(self.itervalues()) if __name__ == "__main__": b = ServiceTypeDatabase() + print b.items() print b["_http._tcp"] print b["_ftp._tcp"] print b["_webdav._tcp"] print b["_webdavs._tcp"] - print b["gurki._tcp"] + print b.get("gurki._tcp") + print len(b) + + for key, _ in zip(b, xrange(3)): + + print key + + for key, _ in zip(b.iteritems(), xrange(3)): + + print key + + for key, _ in zip(b.itervalues(), xrange(3)): + + print key