[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[or-cvs] r22497: {arm} change: fetching header config parameters in a more uniform (arm/trunk/interface)



Author: atagar
Date: 2010-06-09 16:07:56 +0000 (Wed, 09 Jun 2010)
New Revision: 22497

Modified:
   arm/trunk/interface/controller.py
   arm/trunk/interface/headerPanel.py
Log:
change: fetching header config parameters in a more uniform way



Modified: arm/trunk/interface/controller.py
===================================================================
--- arm/trunk/interface/controller.py	2010-06-09 15:46:48 UTC (rev 22496)
+++ arm/trunk/interface/controller.py	2010-06-09 16:07:56 UTC (rev 22497)
@@ -311,6 +311,10 @@
     otherwise unrecognized events)
   """
   
+  # loads config for various interface components
+  config = conf.getConfig("arm")
+  config.update(CONFIG)
+  
   # pauses/unpauses connection resolution according to if tor's connected or not
   torTools.getConn().addStatusListener(connResetListener)
   
@@ -348,7 +352,7 @@
   connections.RESOLVER_FINAL_FAILURE_MSG += " (connection related portions of the monitor won't function)"
   
   panels = {
-    "header": headerPanel.HeaderPanel(stdscr),
+    "header": headerPanel.HeaderPanel(stdscr, config),
     "popup": Popup(stdscr, 9),
     "graph": graphPanel.GraphPanel(stdscr),
     "log": logPanel.LogMonitor(stdscr, conn, loggedEvents)}
@@ -411,9 +415,6 @@
   panels["popup"].redraw()      # hack to make sure popup has a window instance (not entirely sure why...)
   
   # provides notice about any unused config keys
-  config = conf.getConfig("arm")
-  config.update(CONFIG)
-  
   for key in config.getUnusedKeys():
     log.log(CONFIG["log.configEntryUndefined"], "config entry '%s' is unrecognized" % key)
   

Modified: arm/trunk/interface/headerPanel.py
===================================================================
--- arm/trunk/interface/headerPanel.py	2010-06-09 15:46:48 UTC (rev 22496)
+++ arm/trunk/interface/headerPanel.py	2010-06-09 16:07:56 UTC (rev 22497)
@@ -18,11 +18,8 @@
 import time
 import threading
 
-from util import conf, panel, sysTools, torTools, uiTools
+from util import panel, sysTools, torTools, uiTools
 
-# seconds between querying information
-UPDATE_RATE_CFG = ("queries.ps.rate", 5)
-
 # minimum width for which panel attempts to double up contents (two columns to
 # better use screen real estate)
 MIN_DUAL_COL_WIDTH = 141
@@ -35,6 +32,9 @@
 VERSION_STATUS_COLORS = {"new": "blue", "new in series": "blue", "obsolete": "red", "recommended": "green",  
                          "old": "red",  "unrecommended": "red",  "unknown": "cyan"}
 
+# user customizable parameters
+DEFAULT_CONFIG = {"queries.ps.rate": 5}
+
 class HeaderPanel(panel.Panel, threading.Thread):
   """
   Top area contenting tor settings and system information. Stats are stored in
@@ -48,12 +48,11 @@
   * volatile parameter that'll be reset on each update
   """
   
-  def __init__(self, stdscr):
+  def __init__(self, stdscr, config=None):
     panel.Panel.__init__(self, stdscr, 0)
     threading.Thread.__init__(self)
     self.setDaemon(True)
     
-    self._updateRate = conf.getConfig("arm").get(UPDATE_RATE_CFG[0], UPDATE_RATE_CFG[1], 1)
     self._isTorConnected = True
     self._lastUpdate = -1       # time the content was last revised
     self._isLastDrawWide = False
@@ -61,7 +60,12 @@
     self._isPaused = False      # prevents updates if true
     self._halt = False          # terminates thread if true
     self._cond = threading.Condition()  # used for pausing the thread
+    self._config = dict(DEFAULT_CONFIG)
     
+    if config:
+      config.update(self._config)
+      self._config["queries.ps.rate"] = max(self._config["queries.ps.rate"], 1)
+    
     self.vals = {}
     self.valsLock = threading.RLock()
     self._update(True)
@@ -205,9 +209,10 @@
     
     while not self._halt:
       timeSinceReset = time.time() - self._lastUpdate
+      psRate = self._config["queries.ps.rate"]
       
-      if self._isPaused or timeSinceReset < self._updateRate or not self._isTorConnected:
-        sleepTime = max(0.5, self._updateRate - timeSinceReset)
+      if self._isPaused or timeSinceReset < psRate or not self._isTorConnected:
+        sleepTime = max(0.5, psRate - timeSinceReset)
         self._cond.acquire()
         if not self._halt: self._cond.wait(sleepTime)
         self._cond.release()
@@ -326,7 +331,8 @@
       # the ps call formats results as:
       # %CPU   RSS %MEM     ELAPSED
       # 0.3 14096  1.3       29:51
-      psCall = sysTools.call("ps -p %s -o %s" % (self.vals["ps/pid"], ",".join(psParams)), self._updateRate, True)
+      psRate = self._config["queries.ps.rate"]
+      psCall = sysTools.call("ps -p %s -o %s" % (self.vals["ps/pid"], ",".join(psParams)), psRate, True)
       
       if psCall and len(psCall) >= 2:
         stats = psCall[1].strip().split()