summaryrefslogtreecommitdiffstats
path: root/tools/sharding_supervisor/stdio_buffer.py
diff options
context:
space:
mode:
authorphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-07 22:58:10 +0000
committerphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-07 22:58:10 +0000
commitda48400647dbc5bf743c8ef75c364b567b49898e (patch)
tree7e14eaf66942772ccfc3d81114386ac8ab2b5155 /tools/sharding_supervisor/stdio_buffer.py
parent796c352e74203d62d84e2ba216ee3848b6527889 (diff)
downloadchromium_src-da48400647dbc5bf743c8ef75c364b567b49898e.zip
chromium_src-da48400647dbc5bf743c8ef75c364b567b49898e.tar.gz
chromium_src-da48400647dbc5bf743c8ef75c364b567b49898e.tar.bz2
GTTF: remove parts of sharding_supervisor that might be hang-prone.
BUG=none TEST=none Review URL: https://codereview.chromium.org/11367047 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@166538 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools/sharding_supervisor/stdio_buffer.py')
-rw-r--r--tools/sharding_supervisor/stdio_buffer.py60
1 files changed, 0 insertions, 60 deletions
diff --git a/tools/sharding_supervisor/stdio_buffer.py b/tools/sharding_supervisor/stdio_buffer.py
deleted file mode 100644
index 737374d..0000000
--- a/tools/sharding_supervisor/stdio_buffer.py
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-"""Syncronized Standard IO Linebuffer implemented with cStringIO."""
-
-import cStringIO
-import os
-import sys
-import threading
-import Queue
-
-
-class StdioBuffer(object):
- def __init__(self, shard):
- self.line_ready_event = threading.Event()
- self.queue = Queue.Queue()
- self.lock = threading.Lock()
- self.completed = 0
- self.shard = shard
-
- def _pipe_handler(self, system_pipe, program_pipe):
- """Helper method for collecting stdio output. Output is collected until
- a newline is seen, at which point an event is triggered and the line is
- pushed to a buffer as a (stdio, line) tuple."""
- buffer = cStringIO.StringIO()
- pipe_running = True
- while pipe_running:
- char = program_pipe.read(1)
- if not char and self.shard.poll() is not None:
- pipe_running = False
- self.line_ready_event.set()
- buffer.write(char)
- if char == '\n' or not pipe_running:
- line = buffer.getvalue()
- if not line and not pipe_running:
- with self.lock:
- self.completed += 1
- self.line_ready_event.set()
- break
- self.queue.put((system_pipe, line))
- self.line_ready_event.set()
- buffer.close()
- buffer = cStringIO.StringIO()
-
- def handle_pipe(self, system_pipe, program_pipe):
- t = threading.Thread(target=self._pipe_handler, args=[system_pipe,
- program_pipe])
- t.start()
- return t
-
- def readline(self):
- """Emits a tuple of (sys.stderr, line) or (sys.stdout, line). This is a
- blocking call."""
- while self.completed < 2 and self.queue.empty():
- self.line_ready_event.wait()
- self.line_ready_event.clear()
- if not self.queue.empty():
- return self.queue.get_nowait()
- else:
- return (None, None) \ No newline at end of file