浏览代码

Fixed some more places with wrong ID propagation

Yentl Van Tendeloo 9 年之前
父节点
当前提交
747039f0d6

+ 6 - 3
hybrid_server/classes/mvkcontroller.xml

@@ -99,8 +99,11 @@
                                     if "value" in data:
                                         value = [json.loads(data["value"])]
                                     else:
+                                        print("Decode " + str(data["data"]))
                                         value = json.loads(data["data"])
-                                    self.input_queue[data["username"]].append((source, [value]))
+                                        #TODO don't double encode it in the sender!
+                                        value = [json.loads(v) for v in value]
+                                    self.input_queue[data["username"]].append((source, value))
                                 elif data["op"] == "get_output":
                                     self.output_queue[data["username"]].append(source)
                                 else:
@@ -126,7 +129,7 @@
                                 if self.input_queue[user]:
                                     source, args = self.input_queue[user].pop(0)
                                     for args_entry in args:
-                                        self.execute_modelverse(user, "set_input", args_entry)
+                                        self.execute_modelverse(user, "set_input", [args_entry])
 
                                     self.destination = source
                                     self.value = "OK"
@@ -177,7 +180,7 @@
 
                     <transition cond="self.destination is not None" after="self.sccd_yield()" target=".">
                         <raise event="HTTP_input" scope="narrow" target="'to_mvi/%s' % self.destination">
-                            <parameter expr="self.value"/>
+                            <parameter expr="json.dumps(self.value)"/>
                         </raise>
                     </transition>
 

+ 5 - 5
interface/HUTN/hutn_compiler/linker.py

@@ -14,14 +14,14 @@ def link(address, username, objects):
     users = {}
     data = []
 
-    data.append(("V", '3'))
-    data.append(("V", '"link_and_load"'))
+    data.append('3')
+    data.append('"link_and_load"')
     for obj in objects:
-        data.append(("V", '"%s"' % obj))
-    data.append(("V", '""'))
+        data.append('"%s"' % obj)
+    data.append('""')
 
     # Call the main function
-    data.append(("V", '"main"'))
+    data.append('"main"')
 
     data = flush_data(address, data, username)
     v = urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "get_output", "username": username}))).read()

+ 8 - 2
interface/HUTN/hutn_compiler/primitives_object_visitor.py

@@ -16,6 +16,11 @@ class PrimitivesObjectVisitor(PrimitivesVisitor):
 
         self.object_symbols = {}
 
+        def flush_data(data):
+            if data:
+                urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "data": json.dumps(data), "username": self.username}))).read()
+            return []
+
         with open(self.real_file, 'r') as f:
             import hashlib
             md5 = hashlib.md5()
@@ -28,9 +33,9 @@ class PrimitivesObjectVisitor(PrimitivesVisitor):
         flush_data(['3', '"is_defined"', '"%s"' % self.obj_file])
 
         v = urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "get_output", "username": self.username}))).read()
-        v = v.split("=", 2)[2]
+        v = json.loads(v)
         simple_filename = self.real_file.rsplit("/")[-1]
-        if v == "None":
+        if v == None:
             # Not defined, so recompile
             print("[COMPILE] %s" % simple_filename)
         else:
@@ -73,6 +78,7 @@ class PrimitivesObjectVisitor(PrimitivesVisitor):
 
         urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "set_input", "data": json.dumps(data), "username": self.username}))).read()
         v = urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "get_output", "username": self.username}))).read()
+        v = json.loads(v)
         if v == "DONE":
             return True
         else: