runtime/ServicePublisher.py
changeset 262 141a7145c099
parent 217 f3eb35df4d87
child 606 780bd150ebba
--- a/runtime/ServicePublisher.py	Wed Oct 22 14:22:54 2008 +0200
+++ b/runtime/ServicePublisher.py	Fri Oct 24 14:01:36 2008 +0200
@@ -24,46 +24,61 @@
 
 import Zeroconf, socket
 
-# type: fully qualified service type name
-service_type = '_PYRO._tcp.local.'
-
-# properties: dictionary of properties (or a string holding the bytes for the text field)
-serviceproperties = {'description':'Beremiz remote PLC'}
-
-def gethostaddr(dst = '224.0.1.41'):
-    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-    try:
-        s.connect((dst, 7))
-        (host, port) = s.getsockname()
-        s.close()
-        if host != '0.0.0.0':
-            return host
-    except error:
-        pass
-    return socket.gethostbyname(socket.gethostname())
-
-
-def ServicePublisher(name, ip, port):
+class ServicePublisher():
+    def __init__(self):
+        # type: fully qualified service type name
+        self.service_type = '_PYRO._tcp.local.'
+        # properties: dictionary of properties (or a string holding the bytes for the text field)
+        self.serviceproperties = {'description':'Beremiz remote PLC'}
+        
+        self.name = None
+        self.ip_32b = None
+        self.port = None
+        self.server = None
+        self.service_name = None
+        
+    def RegisterService(self, name, ip, port):
 
         # name: fully qualified service name
-        service_name = 'Beremiz_%s.%s'%(name,service_type)
-
+        self.service_name = 'Beremiz_%s.%s'%(name,self.service_type)
+        self.name = name
+        self.port = port
         # No ip params -> get host ip
         if ip == "":
-            ip = gethostaddr()
+            ip = self.gethostaddr()
 
-        print "Mon IP est :"+ip
+        print "My IP is :"+ip
 
-        server = Zeroconf.Zeroconf(ip)
+        self.server = Zeroconf.Zeroconf(ip)
 
         # address: IP address as unsigned short, network byte order
-        ip_32b = socket.inet_aton(ip)
+        self.ip_32b = socket.inet_aton(ip)
 
-        server.registerService(
-             Zeroconf.ServiceInfo(service_type,
-                                  service_name,
-                                  ip_32b,
-                                  port,
-                                  properties = serviceproperties))
-        
-        return server
\ No newline at end of file
+        self.server.registerService(
+             Zeroconf.ServiceInfo(self.service_type,
+                                  self.service_name,
+                                  self.ip_32b,
+                                  self.port,
+                                  properties = self.serviceproperties))
+    
+    def UnRegisterService(self):
+        self.server.unregisterService(
+                                      Zeroconf.ServiceInfo(self.service_type, 
+                                                           self.service_name, 
+                                                           self.ip_32b, 
+                                                           self.port, 
+                                                           properties = self.serviceproperties))
+        self.server.close()
+        del self.server
+    
+    def gethostaddr(self, dst = '224.0.1.41'):
+        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+        try:
+            s.connect((dst, 7))
+            (host, port) = s.getsockname()
+            s.close()
+            if host != '0.0.0.0':
+                return host
+        except error:
+            pass
+        return socket.gethostbyname(socket.gethostname())