runtime/ServicePublisher.py
changeset 1830 e598d1acf354
parent 1826 91796f408540
child 1831 56b48961cc68
equal deleted inserted replaced
1829:a776ac02b079 1830:e598d1acf354
    23 
    23 
    24 
    24 
    25 from __future__ import print_function
    25 from __future__ import print_function
    26 import socket
    26 import socket
    27 import threading
    27 import threading
    28 from util import Zeroconf
    28 import zeroconf
    29 
    29 
    30 service_type = '_PYRO._tcp.local.'
    30 service_type = '_PYRO._tcp.local.'
    31 
    31 
    32 
    32 
    33 class ServicePublisher():
    33 class ServicePublisher():
    53         # name: fully qualified service name
    53         # name: fully qualified service name
    54         self.service_name = 'Beremiz_%s.%s' % (name, service_type)
    54         self.service_name = 'Beremiz_%s.%s' % (name, service_type)
    55         self.name = name
    55         self.name = name
    56         self.port = port
    56         self.port = port
    57 
    57 
    58         self.server = Zeroconf.Zeroconf(ip)
    58         self.server = zeroconf.Zeroconf()
    59         print("MDNS brodcasting on :" + ip)
    59         print("MDNS brodcasting on :" + ip)
    60 
    60 
    61         if ip == "0.0.0.0":
    61         if ip == "0.0.0.0":
    62             ip = self.gethostaddr()
    62             ip = self.gethostaddr()
    63         print("MDNS brodcasted service address :" + ip)
    63         print("MDNS brodcasted service address :" + ip)
    64         self.ip_32b = socket.inet_aton(ip)
    64         self.ip_32b = socket.inet_aton(ip)
    65 
    65 
    66         self.server.registerService(
    66         self.server.register_service(
    67              Zeroconf.ServiceInfo(service_type,
    67              zeroconf.ServiceInfo(service_type,
    68                                   self.service_name,
    68                                   self.service_name,
    69                                   self.ip_32b,
    69                                   self.ip_32b,
    70                                   self.port,
    70                                   self.port,
    71                                   properties=self.serviceproperties))
    71                                   properties=self.serviceproperties))
    72         self.retrytimer = None
    72         self.retrytimer = None
    73 
    73 
    74     def UnRegisterService(self):
    74     def UnRegisterService(self):
    75         if self.retrytimer is not None:
    75         if self.retrytimer is not None:
    76             self.retrytimer.cancel()
    76             self.retrytimer.cancel()
    77 
    77 
    78         self.server.unregisterService(
    78         if self.server is not None:
    79                                       Zeroconf.ServiceInfo(service_type,
    79             self.server.unregister_service(
    80                                                            self.service_name,
    80                 zeroconf.ServiceInfo(service_type,
    81                                                            self.ip_32b,
    81                                      self.service_name,
    82                                                            self.port,
    82                                      self.ip_32b,
    83                                                            properties=self.serviceproperties))
    83                                      self.port,
    84         self.server.close()
    84                                      properties=self.serviceproperties))
    85         self.server = None
    85             self.server.close()
       
    86             self.server = None
    86 
    87 
    87     def gethostaddr(self, dst='224.0.1.41'):
    88     def gethostaddr(self, dst='224.0.1.41'):
    88         s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    89         s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    89         try:
    90         try:
    90             s.connect((dst, 7))
    91             s.connect((dst, 7))