diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-07 22:58:10 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-07 22:58:10 +0000 |
commit | da48400647dbc5bf743c8ef75c364b567b49898e (patch) | |
tree | 7e14eaf66942772ccfc3d81114386ac8ab2b5155 /tools/sharding_supervisor/stdio_buffer.py | |
parent | 796c352e74203d62d84e2ba216ee3848b6527889 (diff) | |
download | chromium_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.py | 60 |
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 |