فهرست منبع

Add username to send_to_mv

Yentl Van Tendeloo 9 سال پیش
والد
کامیت
50289e2686
4فایلهای تغییر یافته به همراه23 افزوده شده و 19 حذف شده
  1. 8 4
      interface/HUTN/hutn_compiler/constructors_object_visitor.py
  2. 8 9
      interface/HUTN/hutn_compiler/linker.py
  3. 2 1
      model/model.py
  4. 5 5
      scripts/process.py

+ 8 - 4
interface/HUTN/hutn_compiler/constructors_object_visitor.py

@@ -1,3 +1,7 @@
+import sys
+sys.path.append("scripts")
+from process import send_to_mv
+
 from constructors_visitor import ConstructorsVisitor
 
 import urllib
@@ -28,7 +32,7 @@ class ConstructorsObjectVisitor(ConstructorsVisitor):
                 '"%s"' % self.obj_file,
                 1,
                ]
-        v = send_to_mv(self.address, data)[1]
+        v = send_to_mv(self.address, self.username, data)[1]
         simple_filename = self.real_file.rsplit("/")[-1]
 
         if v == "None":
@@ -44,7 +48,7 @@ class ConstructorsObjectVisitor(ConstructorsVisitor):
                         '"remove_obj"',
                         '"%s"' % self.obj_file
                        ]
-                send_to_mv(self.address, data)
+                send_to_mv(self.address, self.username, data)
             else:
                 self.visit = lambda i: i
                 self.dump = lambda: True
@@ -72,8 +76,8 @@ class ConstructorsObjectVisitor(ConstructorsVisitor):
         # Wait for kernel to signal that it finished
         data.append('2')
 
-        #TODO move this actual sending elsewhere
-        send_to_mv(self.address, data)
+        #TODO move this actual sending elsewhere (maybe?)
+        send_to_mv(self.address, self.username, data)
 
         v = urllib2.urlopen(urllib2.Request(self.address, urllib.urlencode({"op": "get_output", "username": self.username}))).read()
         v = v.split("=", 2)[2]

+ 8 - 9
interface/HUTN/hutn_compiler/linker.py

@@ -3,15 +3,10 @@ import urllib
 import urllib2
 import json
 
-def flush_data(address, data, username):
-    if data:
-        urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "data": json.dumps(data), "username": username})), timeout=10).read()
-    return []
+sys.path.append("scripts")
+from process import send_to_mv
 
-def link(address, username, objects):
-    # Read out all symbol tables that are to be linked
-    definers = {}
-    users = {}
+def link_code(address, username, objects):
     data = []
 
     data.append(("V", '3'))
@@ -22,8 +17,12 @@ def link(address, username, objects):
 
     # Call the main function
     data.append(("V", '"main"'))
+    return data
+
+def link(address, username, objects):
+    # Read out all symbol tables that are to be linked
+    send_to_mv(address, username, link_code(address, username, objects))
 
-    data = flush_data(address, data, username)
     v = urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "get_output", "username": username}))).read()
     if "OK" not in v:
         print(v)

+ 2 - 1
model/model.py

@@ -5,6 +5,7 @@ sys.path.append("../interface/HUTN")
 from modelverse_state.main import ModelverseState as MvS
 from modelverse_kernel.main import ModelverseKernel as MvK
 from hutn_compiler.compiler import main as do_compile
+from hutn_compiler.linker import link_code
 
 from pypdevs.DEVS import AtomicDEVS, CoupledDEVS
 from pypdevs.simulator import Simulator
@@ -495,7 +496,7 @@ Void function main():
 
 operations = [get_object_constructor(open(f, 'r').read()) for f in files] + \
               get_object_constructor(code) + \
-              get_link_and_load("main", files + ["code.alc"])
+              link_code("main", files + ["code.alc"])
 
 print("Generated operations:")
 print(operations)

+ 5 - 5
scripts/process.py

@@ -1,9 +1,9 @@
-def flush_data(address, data):
+def flush_data(address, username, data):
     if data:
         urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "data": json.dumps(data), "username": username})), timeout=10).read()
     return []
 
-def fetch_output(address):
+def fetch_output(address, username):
     val = urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "get_output", "username": username})), timeout=10).read()
     l, r = output.split("&", 1)
     if "value" in l:
@@ -13,14 +13,14 @@ def fetch_output(address):
     _, output = output.split("=", 1)
     return output
 
-def send_to_mv(address, lst):
+def send_to_mv(address, username, lst):
     data = []
     variables = {}
 
     for c in lst:
         if isinstance(c, int):
-            data = flush_data(data)
-            variables[c] = fetch_output(address)
+            data = flush_data(address, username, data)
+            variables[c] = fetch_output(address, username)
         else:
             data.append(c)