[tuxdroid-svn] r4852 - software_suite_v3/smart-core/smart-server/trunk/util/applicationserver/plugi
Status: Beta
Brought to you by:
ks156
|
From: remi <c2m...@c2...> - 2009-06-22 14:42:59
|
Author: remi
Date: 2009-06-22 14:34:18 +0200 (Mon, 22 Jun 2009)
New Revision: 4852
Modified:
software_suite_v3/smart-core/smart-server/trunk/util/applicationserver/plugin/interpreters/PluginInterpreter.py
Log:
* improved plugin start/stop methods
Modified: software_suite_v3/smart-core/smart-server/trunk/util/applicationserver/plugin/interpreters/PluginInterpreter.py
===================================================================
--- software_suite_v3/smart-core/smart-server/trunk/util/applicationserver/plugin/interpreters/PluginInterpreter.py 2009-06-22 12:33:42 UTC (rev 4851)
+++ software_suite_v3/smart-core/smart-server/trunk/util/applicationserver/plugin/interpreters/PluginInterpreter.py 2009-06-22 12:34:18 UTC (rev 4852)
@@ -27,6 +27,7 @@
self.__runMutex = threading.Lock()
self.__run = False
self.__process = None
+ self.__pid = None
self.__daemon = False
self.__onPluginStartedCallback = None
self.__onPluginStoppedCallback = None
@@ -185,6 +186,11 @@
stderr = subprocess.STDOUT,
cwd = self.__workingPath,
env = self.__shellEnv)
+ if os.name == 'nt':
+ self.__pid = self.__process._handle
+ else:
+ self.__pid = self.__process.pid
+ self.__setRun(True)
t = threading.Thread(target = self.__stdOutLoop)
t.start()
time.sleep(0.1)
@@ -199,11 +205,11 @@
if os.name == 'nt':
import win32api
try:
- win32api.TerminateProcess(int(self.__process._handle), -1)
+ win32api.TerminateProcess(int(self.__pid), -1)
except:
pass
else:
- os.system("kill -9 " + str(self.__process.pid))
+ os.system("kill -3 -15 -9 " + str(self.__pid))
if not self.__getRun():
return
if self.__daemon:
@@ -211,7 +217,7 @@
self.__process.stdin.write("STOP\n")
self.__process.stdin.flush()
except:
- return
+ pass
timeout = 5.0
while self.__process.poll() == None:
timeout -= 0.1
@@ -253,7 +259,6 @@
def __stdOutLoop(self):
"""Loop to handling the stdout messages.
"""
- self.__setRun(True)
if self.__onPluginStartedCallback != None:
self.__onPluginStartedCallback()
while self.__getRun():
|