예제 #1
0
    def __init__(self,
                 command,
                 stdIOType,
                 command_args=None,
                 cwd=None,
                 **kwargs):
        self.log = logging.getLogger(__name__)
        self.log.debug('foo')

        Callback.__init__(self)

        assert isinstance(stdIOType, list)
        self.timeout = kwargs['timeout']
        self.commandSleepTime = kwargs['commandSleepTime']
        self.stdIOType = stdIOType
        self.stdioData = deque()

        args = [command]
        if command_args:
            if not isinstance(command_args, list):
                command_args = [command_args]
            args.extend(command_args)

        # create configured process pipes
        prockwargs = dict()
        prockwargs['shell'] = False
        prockwargs['stdin'] = PIPE
        prockwargs['stdout'] = PIPE if STDIOTYPE.STDOUT in stdIOType else None
        prockwargs['stderr'] = PIPE if STDIOTYPE.STDERR in stdIOType else None
        prockwargs['cwd'] = cwd

        # create process
        self.proc = Popen(args, **prockwargs)

        # create process handler

        self.stdoutHandle = None
        if STDIOTYPE.STDOUT in stdIOType:
            self.stdoutHandle = _StdOutHandler(stdio=self.proc.stdout,
                                               lineWrapper=OutLineWrapper,
                                               **kwargs)
            self.stdoutHandle.register(self._newDataCallbackFnc)

        self.stderrHandle = None
        if STDIOTYPE.STDERR in stdIOType:
            self.stderrHandle = _StdOutHandler(stdio=self.proc.stderr,
                                               lineWrapper=ErrorLineWrapper,
                                               **kwargs)
            self.stderrHandle.register(self._newDataCallbackFnc)

        self.stdioHandle = [self.stdoutHandle, self.stderrHandle]
예제 #2
0
    def __init__(self, **kwargs):
        self.log = logging.getLogger(__name__)
        self.log.debug('init with <%s>', kwargs)

        self.log.debug('call threading.Thread.__init__(self, target=self.run)')
        threading.Thread.__init__(self, target=self.run)
        self.log.debug('call Callback.__init__(self)')
        Callback.__init__(self)

        self.syncThreads = kwargs.get('syncThreads', False)
        self.commandSleepTime = kwargs['commandSleepTime']
        self.timeout = kwargs['timeout']
        self.stdio = kwargs['stdio']
        self.lastDataTime = None
예제 #3
0
    def __init__(self, **kwargs):
        self.log = logging.getLogger(__name__)
        self.log.debug("init with <%s>", kwargs)

        self.log.debug("call threading.Thread.__init__(self, target=self.run)")
        threading.Thread.__init__(self, target=self.run)
        self.log.debug("call Callback.__init__(self)")
        Callback.__init__(self)

        self.syncThreads = kwargs.get("syncThreads", False)
        self.commandSleepTime = kwargs["commandSleepTime"]
        self.timeout = kwargs["timeout"]
        self.stdio = kwargs["stdio"]
        self.lastDataTime = None
예제 #4
0
    def __init__(self, lineWrapper=None, **kwargs):
        self.log = logging.getLogger(__name__)
        self.log.debug('start logging')
        Callback.__init__(self)
        self.lineWrapper = lineWrapper
        self.stdio = kwargs['stdio']
        self.dataCallbackFnc = kwargs.get('dataCallbackFnc', None)
        #self.stdioData = deque()

        # setting stdio-file in non blocking mode
        fcntl.fcntl(self.stdio.fileno(), fcntl.F_SETFL, os.O_NONBLOCK)

        # create data thread and register data callback
        self.stdioThread = _DataThread(**kwargs)
        #self.stdioThread.register(self.stdioData.extend, self)
        self.stdioThread.register(self.storeData, self)
예제 #5
0
    def __init__(self, lineWrapper=None, **kwargs):
        self.log = logging.getLogger(__name__)
        self.log.debug("start logging")
        Callback.__init__(self)
        self.lineWrapper = lineWrapper
        self.stdio = kwargs["stdio"]
        self.dataCallbackFnc = kwargs.get("dataCallbackFnc", None)
        # self.stdioData = deque()

        # setting stdio-file in non blocking mode
        fcntl.fcntl(self.stdio.fileno(), fcntl.F_SETFL, os.O_NONBLOCK)

        # create data thread and register data callback
        self.stdioThread = _DataThread(**kwargs)
        # self.stdioThread.register(self.stdioData.extend, self)
        self.stdioThread.register(self.storeData, self)
예제 #6
0
    def __init__(self, command, stdIOType, command_args=None, cwd=None, **kwargs):
        self.log = logging.getLogger(__name__)
        self.log.debug("foo")

        Callback.__init__(self)

        assert isinstance(stdIOType, list)
        self.timeout = kwargs["timeout"]
        self.commandSleepTime = kwargs["commandSleepTime"]
        self.stdIOType = stdIOType
        self.stdioData = deque()

        args = [command]
        if command_args:
            if not isinstance(command_args, list):
                command_args = [command_args]
            args.extend(command_args)

        # create configured process pipes
        prockwargs = dict()
        prockwargs["shell"] = False
        prockwargs["stdin"] = PIPE
        prockwargs["stdout"] = PIPE if STDIOTYPE.STDOUT in stdIOType else None
        prockwargs["stderr"] = PIPE if STDIOTYPE.STDERR in stdIOType else None
        prockwargs["cwd"] = cwd

        # create process
        self.proc = Popen(args, **prockwargs)

        # create process handler

        self.stdoutHandle = None
        if STDIOTYPE.STDOUT in stdIOType:
            self.stdoutHandle = _StdOutHandler(stdio=self.proc.stdout, lineWrapper=OutLineWrapper, **kwargs)
            self.stdoutHandle.register(self._newDataCallbackFnc)

        self.stderrHandle = None
        if STDIOTYPE.STDERR in stdIOType:
            self.stderrHandle = _StdOutHandler(stdio=self.proc.stderr, lineWrapper=ErrorLineWrapper, **kwargs)
            self.stderrHandle.register(self._newDataCallbackFnc)

        self.stdioHandle = [self.stdoutHandle, self.stderrHandle]