little improvements in processManager class

This commit is contained in:
Bastian Schroll 2019-03-08 07:43:19 +01:00
parent 5bc5fae9b2
commit bb1fd118f5
2 changed files with 33 additions and 19 deletions

View file

@ -32,15 +32,12 @@ class ProcessManager:
self._processHandle = None
self._textMode = textMode
def __del__(self):
self.stop()
def addArgument(self, arg):
"""!add a new argument
@param arg: argument to add as string"""
logging.debug("add argument to process: %s -> %s", self._args[0], arg)
self._args.append(arg)
self._args.append(arg.split())
def clearArguments(self):
"""!clear all arguments"""
@ -48,25 +45,24 @@ class ProcessManager:
def start(self):
"""!start the new process"""
logging.debug("start new process: %s", self._args[0])
self._processHandle = subprocess.Popen(self._args,
stdin=self._stdin,
stdout=self._stdout,
stderr=self._stderr,
universal_newlines=self._textMode)
logging.debug("start new process: %s", self._args)
try:
self._processHandle = subprocess.Popen(self._args,
stdin=self._stdin,
stdout=self._stdout,
stderr=self._stderr,
universal_newlines=self._textMode)
except FileNotFoundError:
logging.error("File not found: %s", self._args[0])
def stop(self):
"""!Stop the process by sending SIGTERM and wait for ending
@return return code of process"""
"""!Stop the process by sending SIGTERM and wait for ending"""
if self._processHandle and self.isRunning:
logging.debug("stopping process: %s", self._args[0])
self._processHandle.terminate()
while self.isRunning:
pass
return self._processHandle.returnCode
logging.debug("process not running: %s", self._args[0])
return 0
logging.debug("cannot stop - process not running: %s", self._args[0])
def readline(self):
"""!Read one line from stdout stream
@ -112,4 +108,4 @@ class ProcessManager:
if self._processHandle.poll() is None:
return True
return False

View file

@ -32,8 +32,6 @@ logging.debug("BOSWatch client has started ...")
logging.debug("Import python modules")
import argparse
logging.debug("- argparse")
import subprocess
logging.debug("- subprocess")
import time
logging.debug("- time")
@ -43,11 +41,31 @@ from boswatch.network.client import TCPClient
from boswatch.network.broadcast import BroadcastClient
from boswatch.decoder.decoder import Decoder
from boswatch.utils import header
from boswatch.processManager import ProcessManager
header.logoToLog()
header.infoToLog()
# multimon = ProcessManager("_bin/win/multimon/multimon-ng.exe", True)
# multimon.addArgument("-a POCSAG1200")
# multimon.addArgument("-t raw")
# multimon.addArgument("-v 3")
# multimon.addArgument("poc1200.raw")
#
# multimon.setStderr(None)
# multimon.start()
#
# logging.debug("go")
#
# while multimon.isRunning:
# data = multimon.readline()
# if data is not None:
# print(data)
#
#
# exit()
logging.debug("parse args")
# With -h or --help you get the Args help
parser = argparse.ArgumentParser(prog="bw_client.py",