[Erp5-report] r18753 - /erp5/trunk/products/ERP5/Tool/AlarmTool.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Jan 16 22:49:43 CET 2008


Author: vincent
Date: Wed Jan 16 22:49:43 2008
New Revision: 18753

URL: http://svn.erp5.org?rev=18753&view=rev
Log:
Apply the same cache as in CMFActivity.ActivityTool to getCurrentNode method.
Reorder test to execute less costly operations first.
Use accessor to get alarmNode value.

Modified:
    erp5/trunk/products/ERP5/Tool/AlarmTool.py

Modified: erp5/trunk/products/ERP5/Tool/AlarmTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Tool/AlarmTool.py?rev=18753&r1=18752&r2=18753&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Tool/AlarmTool.py (original)
+++ erp5/trunk/products/ERP5/Tool/AlarmTool.py Wed Jan 16 22:49:43 2008
@@ -54,6 +54,7 @@
 
 last_tic = time.time()
 last_tic_lock = threading.Lock()
+current_node = None
 
 class AlarmTool(BaseTool):
   """
@@ -193,8 +194,9 @@
       in zope.conf. The Default is every 5 seconds.
     """
     # only start when we are the alarmNode or if it's empty
-    if (self.alarmNode == self.getCurrentNode()) \
-      or not self.alarmNode:
+    alarmNode = self.getAlarmNode()
+    if (not alarmNode) \
+      or (alarmNode == self.getCurrentNode()):
       global last_tic
       last_tic_lock.acquire(1)
       try:
@@ -206,18 +208,20 @@
 
   def getCurrentNode(self):
       """ Return current node in form ip:port """
-      port = ''
-      from asyncore import socket_map
-      for k, v in socket_map.items():
-          if hasattr(v, 'port'):
-              # see Zope/lib/python/App/ApplicationManager.py: def getServers(self)
-              type = str(getattr(v, '__class__', 'unknown'))
-              if type == 'ZServer.HTTPServer.zhttp_server':
-                  port = v.port
-                  break
-      ip = socket.gethostbyname(socket.gethostname())
-      currentNode = '%s:%s' %(ip, port)
-      return currentNode
+      global current_node
+      if current_node is None:
+        port = ''
+        from asyncore import socket_map
+        for k, v in socket_map.items():
+            if hasattr(v, 'port'):
+                # see Zope/lib/python/App/ApplicationManager.py: def getServers(self)
+                type = str(getattr(v, '__class__', 'unknown'))
+                if type == 'ZServer.HTTPServer.zhttp_server':
+                    port = v.port
+                    break
+        ip = socket.gethostbyname(socket.gethostname())
+        current_node = '%s:%s' %(ip, port)
+      return current_node
       
   security.declarePublic('getAlarmNode')
   def getAlarmNode(self):




More information about the Erp5-report mailing list