[pypy-svn] r18057 - in pypy/dist/pypy/translator: goal tool

pedronis at codespeak.net pedronis at codespeak.net
Sat Oct 1 16:13:27 CEST 2005


Author: pedronis
Date: Sat Oct  1 16:13:25 2005
New Revision: 18057

Modified:
   pypy/dist/pypy/translator/goal/translate_pypy.py
   pypy/dist/pypy/translator/tool/pdbplus.py
Log:
command graphserve <port> to start serving graph at a later time



Modified: pypy/dist/pypy/translator/goal/translate_pypy.py
==============================================================================
--- pypy/dist/pypy/translator/goal/translate_pypy.py	(original)
+++ pypy/dist/pypy/translator/goal/translate_pypy.py	Sat Oct  1 16:13:25 2005
@@ -212,15 +212,23 @@
  
     t = translator.Translator()
 
-    if options.graphserve:
-        from pypy.translator.tool.graphserver import run_async_server
-        serv_start, serv_show, serv_stop = run_async_server(t, options)
-        def server_setup():
-            return serv_start, serv_show, serv_stop
-    else:
-        def server_setup():
-            from pypy.translator.tool.graphserver import run_server_for_inprocess_client
-            return run_server_for_inprocess_client(t, options)
+    class ServerSetup:
+        async_server = None
+        
+        def __call__(self, port=None):
+            if self.async_server is not None:
+                return async_server
+            elif options.graphserve or port is not None:
+                if options.graphserve is None:
+                    options.graphserve = port
+                from pypy.translator.tool.graphserver import run_async_server
+                serv_start, serv_show, serv_stop = self.async_server = run_async_server(t, options)
+                return serv_start, serv_show, serv_stop
+            else:
+                from pypy.translator.tool.graphserver import run_server_for_inprocess_client
+                return run_server_for_inprocess_client(t, options)
+
+    server_setup = ServerSetup()
 
     pdb_plus_show = PdbPlusShow(t) # need a translator to support extended commands
 

Modified: pypy/dist/pypy/translator/tool/pdbplus.py
==============================================================================
--- pypy/dist/pypy/translator/tool/pdbplus.py	(original)
+++ pypy/dist/pypy/translator/tool/pdbplus.py	Sat Oct  1 16:13:25 2005
@@ -1,7 +1,8 @@
 import threading, pdb
 
 class _EnableGraphic:
-    pass
+    def __init__(self, port=None):
+        self.port = port
 
 class PdbPlusShow(pdb.Pdb):
 
@@ -343,9 +344,19 @@
         """enable_graphic
 enable pygame graph display even from non-graphic mode"""
         if self.show:
+            print "*** display already there"
             return
         raise _EnableGraphic
 
+    def do_graphserve(self, arg):
+        """graphserve <port>
+start serving graphs on <port>    
+"""
+        if self.show:
+            print "*** display already there"
+            return
+        raise _EnableGraphic(int(arg))
+
     def help_graphs(self):
         print "graph commands are: showg, flowg, callg, classhier, enable_graphic"
 
@@ -381,14 +392,15 @@
         return threading.Thread(target=_run_in_thread, args=())
 
     def start(self, tb, server_setup, graphic=False):
+        port = None
         if not graphic:
             try:
                 self._run_debugger(tb)
-            except _EnableGraphic:
-                pass
+            except _EnableGraphic, engraph:
+                port = engraph.port
             else:
                 return
-        start, show, stop = server_setup()
+        start, show, stop = server_setup(port)
         self.install_show(show)
         debugger = self._run_debugger_in_thread(tb, stop)
         debugger.start()



More information about the Pypy-commit mailing list