runtime/ServicePublisher.py
changeset 1740 b789b695b5c6
parent 1736 7e61baa047f0
child 1742 92932cd370a4
equal deleted inserted replaced
1739:ec153828ded2 1740:b789b695b5c6
    29 
    29 
    30 
    30 
    31 class ServicePublisher():
    31 class ServicePublisher():
    32     def __init__(self):
    32     def __init__(self):
    33         # type: fully qualified service type name
    33         # type: fully qualified service type name
    34         self.serviceproperties = {'description':'Beremiz remote PLC'}
    34         self.serviceproperties = {'description': 'Beremiz remote PLC'}
    35 
    35 
    36         self.name = None
    36         self.name = None
    37         self.ip_32b = None
    37         self.ip_32b = None
    38         self.port = None
    38         self.port = None
    39         self.server = None
    39         self.server = None
    41         self.retrytimer = None
    41         self.retrytimer = None
    42 
    42 
    43     def RegisterService(self, name, ip, port):
    43     def RegisterService(self, name, ip, port):
    44         try:
    44         try:
    45             self._RegisterService(name, ip, port)
    45             self._RegisterService(name, ip, port)
    46         except Exception,e:
    46         except Exception, e:
    47             self.retrytimer = threading.Timer(2,self.RegisterService,[name, ip, port])
    47             self.retrytimer = threading.Timer(2, self.RegisterService, [name, ip, port])
    48             self.retrytimer.start()
    48             self.retrytimer.start()
    49 
    49 
    50     def _RegisterService(self, name, ip, port):
    50     def _RegisterService(self, name, ip, port):
    51         # name: fully qualified service name
    51         # name: fully qualified service name
    52         self.service_name = 'Beremiz_%s.%s' % (name,service_type)
    52         self.service_name = 'Beremiz_%s.%s' % (name, service_type)
    53         self.name = name
    53         self.name = name
    54         self.port = port
    54         self.port = port
    55 
    55 
    56         self.server = Zeroconf.Zeroconf(ip)
    56         self.server = Zeroconf.Zeroconf(ip)
    57         print "MDNS brodcasting on :"+ip
    57         print "MDNS brodcasting on :"+ip
    88             s.connect((dst, 7))
    88             s.connect((dst, 7))
    89             (host, port) = s.getsockname()
    89             (host, port) = s.getsockname()
    90             s.close()
    90             s.close()
    91             if host != '0.0.0.0':
    91             if host != '0.0.0.0':
    92                 return host
    92                 return host
    93         except Exception,e:
    93         except Exception, e:
    94             pass
    94             pass
    95         return socket.gethostbyname(socket.gethostname())
    95         return socket.gethostbyname(socket.gethostname())