[ create a new paste ] login | about

Project: circuits
Link: http://circuits.codepad.org/2Wa86Wwu    [ raw code | fork ]

Plain Text, pasted on Jan 23:
diff -r b21c6b602735 circuits/io/file.py
--- a/circuits/io/file.py	Wed Jan 23 11:17:10 2013 +0100
+++ b/circuits/io/file.py	Wed Jan 23 14:22:07 2013 +0100
@@ -76,6 +76,7 @@
         self._poller = None
         self._buffer = deque()
         self._closeflag = False
+        self._closed = False
 
     @property
     def closed(self):
@@ -116,6 +117,8 @@
         if "r" in self.mode or "+" in self.mode:
             self._poller.addReader(self, self._fd)
 
+        self._closed = False
+
         self.fire(Opened(self.filename, self.mode))
 
     @handler("registered", channel="*")
@@ -159,6 +162,8 @@
         except:
             pass
 
+        self._closed = True
+
         self.fire(Closed())
 
     def close(self):
diff -r b21c6b602735 circuits/io/process.py
--- a/circuits/io/process.py	Wed Jan 23 11:17:10 2013 +0100
+++ b/circuits/io/process.py	Wed Jan 23 14:22:07 2013 +0100
@@ -138,12 +138,13 @@
 
     @handler("generate_events")
     def _on_generate_events(self, event):
-        if self.p is not None:
-            status = self.p.poll()
-            if status is not self._status:
-                self._status = status
-                self.fire(Stopped(self))
-                event.reduce_time_left(0)
-                return True
-            else:
-                event.reduce_time_left(TIMEOUT)
+        if self.p is not None and self._status is None:
+            self._status = self.p.poll()
+
+        if self._status is not None and self._stdout._closed \
+                        and self._stderr._closed:
+            self.fire(Stopped(self))
+            event.reduce_time_left(0)
+            return True
+        else:
+            event.reduce_time_left(TIMEOUT)
diff -r b21c6b602735 tests/io/test_process.py
--- a/tests/io/test_process.py	Wed Jan 23 11:17:10 2013 +0100
+++ b/tests/io/test_process.py	Wed Jan 23 14:22:07 2013 +0100
@@ -1,12 +1,7 @@
 #!/usr/bin/env python
 
-
-import sys
-
 from circuits.io import Process, Start
 
-from tests.io import hello
-
 
 def test(manager, watcher):
     p = Process(["echo", "Hello World!"]).register(manager)



Create a new paste based on this one


Comments: