Only use Avahi if module can be loaded (implements #22)
This commit is contained in:
parent
b88f1c6e0b
commit
1960cb2517
1 changed files with 21 additions and 12 deletions
|
|
@ -2,10 +2,13 @@
|
||||||
|
|
||||||
|
|
||||||
import gi
|
import gi
|
||||||
|
try:
|
||||||
gi.require_version('Avahi', '0.6')
|
gi.require_version('Avahi', '0.6')
|
||||||
import logging
|
|
||||||
|
|
||||||
from gi.repository import Avahi
|
from gi.repository import Avahi
|
||||||
|
use_avahi = True
|
||||||
|
except:
|
||||||
|
use_avahi = False
|
||||||
|
import logging
|
||||||
|
|
||||||
from mcg import client
|
from mcg import client
|
||||||
|
|
||||||
|
|
@ -25,15 +28,8 @@ class ZeroconfProvider(client.Base):
|
||||||
self._services = {}
|
self._services = {}
|
||||||
self._logger = logging.getLogger(__name__)
|
self._logger = logging.getLogger(__name__)
|
||||||
# Client
|
# Client
|
||||||
self._client = Avahi.Client(flags=0,)
|
if use_avahi:
|
||||||
try:
|
self._start_client()
|
||||||
self._client.start()
|
|
||||||
# Browser
|
|
||||||
self._service_browser = Avahi.ServiceBrowser(domain='local', flags=0, interface=-1, protocol=Avahi.Protocol.GA_PROTOCOL_UNSPEC, type=ZeroconfProvider.TYPE)
|
|
||||||
self._service_browser.connect('new_service', self.on_new_service)
|
|
||||||
self._service_browser.attach(self._client)
|
|
||||||
except Exception as e:
|
|
||||||
self._logger.info(e)
|
|
||||||
|
|
||||||
|
|
||||||
def on_new_service(self, browser, interface, protocol, name, type, domain, flags):
|
def on_new_service(self, browser, interface, protocol, name, type, domain, flags):
|
||||||
|
|
@ -55,3 +51,16 @@ class ZeroconfProvider(client.Base):
|
||||||
def on_failure(self, resolver, date):
|
def on_failure(self, resolver, date):
|
||||||
if resolver in self._service_resolvers:
|
if resolver in self._service_resolvers:
|
||||||
self._service_resolvers.remove(resolver)
|
self._service_resolvers.remove(resolver)
|
||||||
|
|
||||||
|
|
||||||
|
def _start_client(self):
|
||||||
|
self._logger.info("Starting Avahi client")
|
||||||
|
self._client = Avahi.Client(flags=0,)
|
||||||
|
try:
|
||||||
|
self._client.start()
|
||||||
|
# Browser
|
||||||
|
self._service_browser = Avahi.ServiceBrowser(domain='local', flags=0, interface=-1, protocol=Avahi.Protocol.GA_PROTOCOL_UNSPEC, type=ZeroconfProvider.TYPE)
|
||||||
|
self._service_browser.connect('new_service', self.on_new_service)
|
||||||
|
self._service_browser.attach(self._client)
|
||||||
|
except Exception as e:
|
||||||
|
self._logger.info(e)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue