コード例 #1
0
ファイル: nt.py プロジェクト: CloudRunnerIO/cloudrunner
    def __init__(self, popen, run_as):
        self.popen = popen
        self.stdin = popen.stdin
        self.stdout = popen.stdout
        self.stderr = popen.stderr
        self.input_fd = None
        self.run_as = run_as

        self.stdout_reader = AsyncPipeReader(self.stdout)
        self.stderr_reader = AsyncPipeReader(self.stderr)
        self.stdout_reader.start()
        self.stderr_reader.start()
コード例 #2
0
    def __init__(self, popen, run_as):
        self.popen = popen
        self.stdin = popen.stdin
        self.stdout = popen.stdout
        self.stderr = popen.stderr
        self.input_fd = None
        self.run_as = run_as

        self.stdout_reader = AsyncPipeReader(self.stdout)
        self.stderr_reader = AsyncPipeReader(self.stderr)
        self.stdout_reader.start()
        self.stderr_reader.start()
コード例 #3
0
ファイル: nt.py プロジェクト: CloudRunnerIO/cloudrunner
class PopenWrapper(object):
    STDIN = 1
    STDOUT = 2
    STDERR = 3
    TRANSPORT = 4

    def __init__(self, popen, run_as):
        self.popen = popen
        self.stdin = popen.stdin
        self.stdout = popen.stdout
        self.stderr = popen.stderr
        self.input_fd = None
        self.run_as = run_as

        self.stdout_reader = AsyncPipeReader(self.stdout)
        self.stderr_reader = AsyncPipeReader(self.stderr)
        self.stdout_reader.start()
        self.stderr_reader.start()

    def set_input_fd(self, input_socket):
        self.input_fd = None  # input_socket.fd()  # Not Implemented Yet

    def select(self, timeout=0):
        ret = []
        if self.input_fd and self.input_fd.poll(timeout):
            ret.append(self.TRANSPORT)

        if self.stdout_reader.has_data():
            ret.append(self.STDOUT)

        if self.stderr_reader.has_data():
            ret.append(self.STDERR)

        return ret

    def read_out(self):
        return self.stdout_reader.read()

    def read_err(self):
        return self.stderr_reader.read()

    def write(self, data):
        self.stdin.write(data)

    def finalize(self):
        stdout, stderr = '', ''
        try:
            try:
                if self.popen.poll() is None:
                    final_stdout, final_stderr = self.popen.communicate()
                    stdout = final_stdout
                    stderr = final_stderr
            except:
                pass

            ret_code = self.popen.returncode
            return (ret_code, stdout, stderr)
        finally:
            self.stdout_reader.close()
            self.stderr_reader.close()

    # override methods

    def poll(self):
        return self.popen.poll()

    def kill(self):
        return self.popen.kill()

    def terminate(self):
        return self.popen.terminate()
コード例 #4
0
class PopenWrapper(object):
    STDIN = 1
    STDOUT = 2
    STDERR = 3
    TRANSPORT = 4

    def __init__(self, popen, run_as):
        self.popen = popen
        self.stdin = popen.stdin
        self.stdout = popen.stdout
        self.stderr = popen.stderr
        self.input_fd = None
        self.run_as = run_as

        self.stdout_reader = AsyncPipeReader(self.stdout)
        self.stderr_reader = AsyncPipeReader(self.stderr)
        self.stdout_reader.start()
        self.stderr_reader.start()

    def set_input_fd(self, input_socket):
        self.input_fd = None  # input_socket.fd()  # Not Implemented Yet

    def select(self, timeout=0):
        ret = []
        if self.input_fd and self.input_fd.poll(timeout):
            ret.append(self.TRANSPORT)

        if self.stdout_reader.has_data():
            ret.append(self.STDOUT)

        if self.stderr_reader.has_data():
            ret.append(self.STDERR)

        return ret

    def read_out(self):
        return self.stdout_reader.read()

    def read_err(self):
        return self.stderr_reader.read()

    def write(self, data):
        self.stdin.write(data)

    def finalize(self):
        stdout, stderr = '', ''
        try:
            try:
                if self.popen.poll() is None:
                    final_stdout, final_stderr = self.popen.communicate()
                    stdout = final_stdout
                    stderr = final_stderr
            except:
                pass

            ret_code = self.popen.returncode
            return (ret_code, stdout, stderr)
        finally:
            self.stdout_reader.close()
            self.stderr_reader.close()

    # override methods

    def poll(self):
        return self.popen.poll()

    def kill(self):
        return self.popen.kill()

    def terminate(self):
        return self.popen.terminate()