浏览代码

Make multiple invocations of init possible, with different controllers as a result

Yentl Van Tendeloo 8 年之前
父节点
当前提交
aa403cc1a1
共有 3 个文件被更改,包括 20 次插入13 次删除
  1. 1 0
      integration/test_powerwindow.py
  2. 2 0
      unit/test_all.py
  3. 17 13
      wrappers/modelverse.py

+ 1 - 0
integration/test_powerwindow.py

@@ -5,6 +5,7 @@ import sys
 
 sys.path.append("wrappers")
 from modelverse import *
+import threading
 
 class TestPowerWindow(unittest.TestCase):
     def setUp(self):

+ 2 - 0
unit/test_all.py

@@ -6,6 +6,8 @@ from utils import *
 sys.path.append("wrappers")
 from modelverse import *
 
+import threading
+
 model_hierarchy = \
             {"formalisms/": {"SimpleClassDiagrams": {},
                              "TypeMapping": {},

+ 17 - 13
wrappers/modelverse.py

@@ -2,11 +2,7 @@ from sccd.runtime.statecharts_core import Event
 import sccd.runtime.socket2event as socket2event
 import modelverse_SCCD
 import time
-
-controller = modelverse_SCCD.Controller()
-socket2event.boot_translation_service(controller)
-
-ID = 0
+import threading
 
 # Exceptions
 class ModelverseException(Exception):
@@ -77,6 +73,22 @@ def OUTPUT():
                 raise UnknownMetamodellingHierarchy()
 
 def init(address_param="127.0.0.1:8001", timeout=20.0):
+    global controller
+    global ID
+    global responses
+
+    controller = modelverse_SCCD.Controller()
+    socket2event.boot_translation_service(controller)
+
+    ID = 0
+
+    thrd = threading.Thread(target=run_controller)
+    thrd.daemon = True
+    thrd.start()
+
+    responses = controller.addOutputListener("action_out")
+    controller.addOutputListener("ready").fetch(-1)
+
     INPUT("init", None, [address_param, timeout])
     return OUTPUT()
 
@@ -441,11 +453,3 @@ def process_execute(process_name, prefix, callbacks=None):
                 return None
         
         # TODO monitor the new function and execute the correct callback
-
-import threading
-thrd = threading.Thread(target=run_controller)
-thrd.daemon = True
-thrd.start()
-
-responses = controller.addOutputListener("action_out")
-controller.addOutputListener("ready").fetch(-1)